• 5582阅读
  • 7回复

两个widget的问题? [复制链接]

上一主题 下一主题
离线wind201022
 
只看楼主 正序阅读 楼主  发表于: 2012-07-11
用自编写代码方式,建立一个widget w ,然后以w为父窗口,再在上面建一个widget w2 ,大小为QRect(40, 40, 151, 81) ,背景颜色为黑色,可运行后只有父窗口w, 没有w2显示,请教下,代码如下;

/*******************************main.cpp************************/

#include <QtGui/QApplication>
#include "widget.h"
#include "widget2.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

/**************************widget.h******************************/
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTabWidget>
#include "widget2.h"

class Widget : public QWidget
{
    Q_OBJECT
public:
    explicit Widget(QWidget *parent = 0);

signals:

public slots:

public:
   widget2 *w2;
    
};

#endif // WIDGET_H

/**************************widget.cpp******************************/

#include "widget.h"
#include "widget2.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent)
{
    resize(240, 320);
    setStyleSheet(QString::fromUtf8(""));

    w2 = new widget2(this);
}

/**************************widget2.h******************************/
#ifndef WIDGET2_H
#define WIDGET2_H

#include <QWidget>

class widget2 : public QWidget
{
    Q_OBJECT
public:
    explicit widget2(QWidget *parent = 0);

signals:

public slots:

};

#endif // WIDGET2_H

/**************************widget2.cpp******************************/
#include "widget2.h"
#include <QDebug>

widget2::widget2(QWidget *parent) :
    QWidget(parent)
{
    this->setObjectName(QString::fromUtf8("widget2"));
    this->setGeometry(QRect(40, 40, 151, 81));  //大小
    this->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 0, 0);"));  //黑色
}


离线wind201022
只看该作者 7楼 发表于: 2012-07-17
恩,谢谢 ,两个窗体显示了 ,现在widget2窗体是脱离父窗体的 ,并且有自己的标题栏,但如何才能像 在qt designer里在父窗体里拖入一个控件widget,运行显示拖入的控件widget是嵌入在父窗体里面的,没有标题兰之类的东西 那样的效果,该如何修改,能否指教一下,谢谢
离线bingcaihuang

只看该作者 6楼 发表于: 2012-07-13
回 5楼(wind201022) 的帖子
我晕,这样啊
widget2::widget2(QWidget *parent)
: QWidget(parent, Qt::Window)
离线wind201022
只看该作者 5楼 发表于: 2012-07-13
w2 = new widget2(Qt::Window);
还是报错:
错误:no matching function for call to 'widget2::widget2(Widget* const, Qt::WindowType)'
离线bingcaihuang

只看该作者 4楼 发表于: 2012-07-12
回 3楼(wind201022) 的帖子
你改为Qt::Window试试吧
离线wind201022
只看该作者 3楼 发表于: 2012-07-12
改了一句 w2 = new widget2(this,Qt::WindowStaysOnTopHint);
编译出错:
widget.cpp:11: 错误:no matching function for call to 'widget2::widget2(Widget* const, Qt::WindowType)'

应该如何改,谢谢!
离线bingcaihuang

只看该作者 2楼 发表于: 2012-07-11
回 楼主(wind201022) 的帖子
除此以外还要show()啊
离线bingcaihuang

只看该作者 1楼 发表于: 2012-07-11
回 楼主(wind201022) 的帖子
widget2其实已经出现了,只是Qt::WindowFlags默认为0,设置一下就看到了
快速回复
限100 字节
 
上一个 下一个