Qt 子視窗(自定義qdialog,qwidget)嵌入到父視窗,子視窗跟隨父視窗
阿新 • • 發佈:2020-08-26
當我們自己定義了一個類繼承自QWdiget,並在其中實現了一些自定義的功能(比如QLabel移動到指定座標)
例如
class Demonstration_Widget : public QWidget
想要把這個視窗嵌入到主視窗中,與其他視窗一起在主視窗中構成主介面
只需要在這個子視窗的建構函式中新增:
1 setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);
2 hide();
而在主GUI視窗的類中新增子視窗的標頭檔案,例如:
1 #include <QMainWindow>
2 #include " demonstration_widget.h"
3
4 namespace Ui {
5 class MainWindow;
6 }
7
8 class MainWindow : public QMainWindow
9 {
10 Q_OBJECT
11
12 public:
13 explicit MainWindow(QWidget *parent = 0);
14 ~MainWindow();
15
16 private:
17 Ui::MainWindow *ui;
18
19 Demonstration_Widget *w_demonstration;
20 };
接著在主介面對應類的建構函式中,建立子視窗物件,設定子視窗顯示位置並使其顯示即可。例如:
1 MainWindow::MainWindow(QWidget *parent) :
2 QMainWindow(parent),
3 ui(new Ui::MainWindow)
4 {
5 ui->setupUi(this);
6 w_demonstration = new Demonstration_Widget(this);
7 w_demonstration->move(250,250);
8 w_demonstration->show();
9
10 }
最後中main.cpp中顯示主介面,可以看到子視窗嵌入到了主介面的相應位置
1 #include <QApplication>
2 #include "mainwindow.h"
3
4 int main(int argc, char *argv[])
5 {
6 QApplication a(argc, argv);
7
8 MainWindow mainw;
9 mainw.show();
10
11 return a.exec();
12 }