[QT4]動態對話框和Qt設計師

在對一個窗口進行操作的時候,經常需要打開其他窗口

其實用Qt設計師和QUiLoader就可以很簡單的實現這個功能,下面以一個例子簡單介紹一下:


1、新建一個窗口,窗口具有兩個PushButton,New按鈕可以新建一個窗口,Ok按鈕退出當前窗口



2、新建一個窗口,窗口只有一個ok按鈕,此窗口計劃爲第一個窗口點擊New按鈕生成


3、connect(new按鈕單擊信號 --> 打開new window窗口)

UILoader::UILoader(QWidget *parent, Qt::WFlags flags)
	: QMainWindow(parent, flags)
{
	ui.setupUi(this);

	connect(ui.newButton,SIGNAL(clicked()),this,SLOT(newWindow()));
}

UILoader::~UILoader()
{

}

void UILoader::newWindow()
{
	QUiLoader lad;
	QFile f("new Window.ui");
	QWidget *wid = lad.load(&f);

	if (NULL != wid)
	{
		wid->show();
	}

}
private slots:
		void newWindow();

代碼很簡單,信號-->槽,這裏的槽在當前class聲明和實現

這裏使用了QUiLoader和QFile,關於這兩個class,可以使用Qt助手,可以方便看到其用法和所需頭文件,這裏就不再介紹了:



編譯後運行:



如果需要使用動態對話框中的子部件,可以使用QObject::findChild<T>接口,比如我這個例子想訪問新窗口的QLabel,將文本改變爲"Hello World",可以這樣實現:

QLabel* label = wid->findChild<QLabel*>("label");
		if (NULL != label)
		{
			label->setText("Hello World");
		}
findChild接口需要QLabel的名稱即可

Run:



發佈了33 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章