• 5868阅读
  • 3回复

求助 :QWidget 里显示另一个QWidget [复制链接]

上一主题 下一主题
离线ljty2008
 

只看楼主 倒序阅读 楼主  发表于: 2010-07-14
我想在一个界面里(music) 通过点击一个按钮显示另一个界面(spectrum),编译通过,点击按钮后提示提交bug,就挂那了。主要代码如下,大家帮忙看看.......

//music.h

#ifndef MUSIC_H
#define MUSIC_H
class Music: public QWidget
{
    Q_OBJECT

public:
                     Music(QWidget *parent = NULL);
      ~Music();
        
public slots:
    void on_pbPlay_clicked();
    
private:    
    QPushButton *PlayButton;
                      QLabel         *m_TotalBackGroundLabel;
protected:
    Spectrum *Spui;  //另一个要显示的类

};
#endif



//music.cpp

#include "music.h"
#include "spectrum.h"
Music::Music(QWidget *parent): QWidget (parent)
{
                    QPalette pal;
    pal.setColor(QPalette::Background, QColor(0,0,0));
    m_TotalBackGroundLabel=new QLabel(this);
    m_TotalBackGroundLabel->setAutoFillBackground(true);
    m_TotalBackGroundLabel->setGeometry(0, 0, 800, 480);
    m_TotalBackGroundLabel->setPalette( pal );
    m_TotalBackGroundLabel->show();

                     PlayButton= new QPushButton(this);
    PlayButton->setStyleSheet("border-image: url(./Images/musicplayoff.png);");
    PlayButton->setFocusPolicy(Qt::NoFocus);
    PlayButton->setGeometry(177, 409, 66, 65);
    PlayButton->show();
              
                     connect(PlayButton,SIGNAL(clicked()),this,SLOT(on_pbPlay_clicked()));
}



void Music::on_pbPlay_clicked()
{
    if(Spui == NULL)
    {
        Spui = new Spectrum(this);    
        Spui ->show();
    }
    else
        Spui->show();

}


// spectrum.h

#ifndef SPECTRUM_H
#define SPECTRUM_H
#include <QtGui>


class Spectrum: public QWidget
{
    Q_OBJECT

public:
                    Spectrum(QWidget *parent = NULL);
      ~Spectrum();

protected:
    void paintEvent(QPaintEvent*);

};
#endif


// spetrum.cpp

#include "spectrum.h"
Spectrum::Spectrum(QWidget *parent): QWidget (parent)
{
    QWidget *pWidget = NULL;
//    QPainter p(pWidget);
    QPalette pal;
    pal.setBrush(QPalette::Window,QBrush(QPixmap("Images/musicmiddleframe.png")));
    pWidget->setPalette(pal);
    pWidget->setAutoFillBackground(true);
    pWidget->setGeometry(177,191, 604, 95);
}

Spectrum::~Spectrum()
{
  
}

void Spectrum::paintEvent ( QPaintEvent *  )
{
    
}


主要代码就是这样,麻烦各位帮忙看看.......
离线ljty2008

只看该作者 1楼 发表于: 2010-07-14
查出一个问题: 首先要在Music::Music(QWidget *parent): QWidget (parent){}初始化 Spui=NULL;
编译运行后 还是有问题(bug)  求解........
离线paranoid
只看该作者 2楼 发表于: 2010-07-14
主要问题在这
Spectrum::Spectrum(QWidget *parent): QWidget (parent)
{
    QWidget *pWidget = NULL;
    pWidget->setPalette(pal);
离线ljty2008

只看该作者 3楼 发表于: 2010-07-15
明白了,谢谢 更改后的为:
Spectrum::Spectrum(QWidget *parent): QWidget (parent)
{
         QPalette pal;
           pal.setBrush(QPalette::Window,QBrush(QPixmap("./Images/musicmiddleframe.png")));
    this->setPalette(pal);
    this->setAutoFillBackground(true);
}


void Music::on_pbPlay_clicked()
{
    if(Spui == NULL)
    {
        Spui = new Spectrum(this);  
        Spui->setGeometry(177,191, 604, 95);
        Spui ->show();
    }
    else
        Spui->show();

}
快速回复
限100 字节
 
上一个 下一个