本文要講的知識(shí)點(diǎn)就一個(gè),如何在Qt中將一個(gè)界面加入另一個(gè)界面,有沒有在開發(fā)中遇到過呢?速來圍觀吧! 我們知道QtCreator中是有集成界面(UI)設(shè)計(jì)器的,可以在設(shè)計(jì)器中拖拽控件到界面文件上(*.ui文件)。將一個(gè)界面加入另一個(gè)界面就用到了一個(gè)控件QScrollArea,接下來就講解如何使用該控件完成如題所示的功能。 假設(shè):有一個(gè)mainwindow.ui的界面類,有一個(gè)test.ui的界面類,我們將test.ui界面加入mainwindow.ui界面。 首先:在mainwindow.ui界面中,加入QScrollArea,從QtCreator中拖入進(jìn)去即可(或者自己手寫代碼添加), 這里我們假設(shè)QScrollArea控件的名稱是myArea。(記住該假設(shè)) 然后:在mainwindow.h頭文件中包含Test類的頭文件,并定義Test類對象的指針,如下: #ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include "test.h" //包含Test類的頭文件
namespace Ui { class MainWindow; } class MainWindow:public QMainWindow{ Q_OBJECT public: explicit MainWindow(QWidget*parent=0); ~MainWindow(); void setUi(); private: Ui::MainWindow *ui; Test *widget; //定義Test類對象的指針 };
#endif //MAINWINDOW_H 最后:調(diào)用QScrollArea的 void setWidget(QWidget *widget)方法即可。 在mainwindow.cpp中的構(gòu)造函數(shù)中添加如下代碼: widget = new Test(); ui->myArea->setWidget(widget); 至此,本文要講述的知識(shí)點(diǎn)就結(jié)束了。 再補(bǔ)充一點(diǎn):如果再new一個(gè)Test類的對象,再添加到myArea中,那么之前添加的widget就會(huì)被釋放, 并且會(huì)成為野指針。即: widget2 = new Test(); ui->myArea->setWidget(widget2); 在執(zhí)行完上述兩行代碼后,widget指向的對象被釋放,widget成為了野指針。 好了,本文就介紹到這里了,希望閱讀的你有收獲。 |
|