• 6891阅读
  • 2回复

[提问]急救 设置了背景的QWidget 如何显示Label或者按钮 [复制链接]

上一主题 下一主题
离线a发神经a
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-14
我刚学Qt一个星期,纯属菜鸟。
          我在自己建立的工程里面完成了QWidget的背景设置,并且实现了图片窗口的大小变化而变化,现在出现一个很严重的问题,在QWidget上面再放一些按钮,比如PushButton和Label等都显示不出来,很急!!求高手帮忙!!

我的Wedget代码为:
==================Fight_UI .h==========================================

class Fight_UI : public QMainWindow
{
    Q_OBJECT

public:
    Fight_UI(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~Fight_UI();

protected:
    void resizeEvent(QResizeEvent *event);
private:
    QImage _image;
    QLabel *label;
    QHBoxLayout *layout;
    

private:
    Ui::Fight_UIClass ui;
};
=======================================Fight_UI .cpp====================
Fight_UI::Fight_UI(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    
    _image.load("Resources/Game_background.jpg");
    QWidget::setAutoFillBackground(true);   // 这个属性一定要设置
    QPalette pal(palette());
    pal.setBrush(QPalette::Window,
        QBrush(_image.scaled(size(), Qt::IgnoreAspectRatio,
        Qt::SmoothTransformation)));
    QWidget::setPalette(pal);
    
    layout = new QHBoxLayout ;     //从这里开始,到this->setLayout(layout);是我自己尝试用来显示一些新部件,      
    label = new QLabel("hello!");     //但是显示不出来……
    layout->addWidget(label);
    this->setLayout(layout);
    ui.setupUi(this);
}

void Fight_UI::resizeEvent(QResizeEvent *event)
{

    QWidget:: resizeEvent (event);
    QPalette pal(QWidget::palette());
    pal.setBrush(QPalette::Window,
        QBrush(_image.scaled(event->size(), Qt::IgnoreAspectRatio,
        Qt::SmoothTransformation)));
    QWidget::setPalette(pal);
}

时间比较紧急,希望有大家可以帮帮小弟~~
[ 此帖被a发神经a在2011-05-14 10:52重新编辑 ]
离线dbzhang800

只看该作者 1楼 发表于: 2011-05-14
QMainWindow 基本用法错误。先去看manual或例子吧
离线zhy282289
只看该作者 2楼 发表于: 2011-05-14
没有问题啊,
        QMainWindow dlg;
    dlg.setStyleSheet(QString("background-image:url(:/testAll_V2010/Resources/love.PNG)"));
    QPushButton    button("love",&dlg);
    dlg.show();
为什么我脸这么胖~
快速回复
限100 字节
 
上一个 下一个