QT:子窗口(自定义qdialog,qwidget)嵌入到父窗口,子窗口跟随父窗口

当我们自己定义了一个类继承自QWdiget,并在其中实现了一些自定义的功能(比如QLabel移动到指定坐标)

例如

class Demonstration_Widget : public QWidget

想要把这个窗口嵌入到主窗口中,与其他窗口一起在主窗口中构成主界面

只需要在这个子窗口的构造函数中添加:

setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);
hide();

而在主GUI窗口的类中添加子窗口的头文件,例如:

#include 
#include "demonstration_widget.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

    Demonstration_Widget *w_demonstration;
};

接着在主界面对应类的构造函数中,创建子窗口对象,设置子窗口显示位置并使其显示即可。例如:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    w_demonstration = new Demonstration_Widget(this);
    w_demonstration->move(250,250);
    w_demonstration->show();

}

最后中main.cpp中显示主界面,可以看到子窗口嵌入到了主界面的相应位置

#include 
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow mainw;
    mainw.show();

    return a.exec();
}




你可能感兴趣的:(Qt)