- Qt編程快速入門(mén)
- 鮑忠貴
- 508字
- 2021-03-19 17:41:46
3.2 在Qt Designer中建立信號(hào)和槽
第2章我們已經(jīng)通過(guò)Qt Designer學(xué)習(xí)了對(duì)菜單等動(dòng)作信號(hào)的響應(yīng),在Qt Designer中,右擊鼠標(biāo),在彈出的快捷菜單中選擇go to slot命令可以很快在主窗口中建立對(duì)信號(hào)的響應(yīng)。在5.2.1節(jié),我們還將介紹利用可視化方法定義信號(hào)和槽的關(guān)聯(lián)。
本節(jié)我們繼續(xù)用Qt Designer使用Qt預(yù)定義的信號(hào)和槽。下面的例子,建立整數(shù)旋轉(zhuǎn)框和滑動(dòng)條間的關(guān)聯(lián),使得數(shù)據(jù)的變化能夠聯(lián)動(dòng)。
(1)新建一個(gè)工程ch3,在主窗口中添加一個(gè)整數(shù)旋轉(zhuǎn)框SpinBox和一個(gè)水平方向的滑動(dòng)條horizontalSlider,在信號(hào)和槽編輯面板中,單擊加號(hào),選擇發(fā)送者h(yuǎn)orizontalSlider,在信號(hào)中選擇valueChanged,選擇spinBox為接收方,槽中的操作為setValue;用同樣的方法,建立spinBox到horizontalSlider的連接,如圖3-2所示。

圖3-2 信號(hào)和槽關(guān)聯(lián)的示意程序設(shè)計(jì)界面
(2)選中SpinBox后右擊,在彈出的快捷菜單中選擇go to slot命令,在出現(xiàn)的對(duì)話框中,選擇valueChanged(QString)信號(hào),如圖3-3所示。

圖3-3 選擇spinBox的信號(hào)響應(yīng)槽
(3)添加以下代碼,在狀態(tài)欄顯示數(shù)值。
void MainWindow::on_spinBox_valueChanged(QString) { ui->statusBar->showMessage(QString); }
(4)上述過(guò)程中,Qt根據(jù)設(shè)計(jì)的Form文件,在ui_mainwindow.h中自動(dòng)添加了關(guān)聯(lián)代碼。
void setupUi(QMainWindow *MainWindow) { … QObject::connect(horizontalSlider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int))); QObject::connect(spinBox, SIGNAL(valueChanged(int)), horizontalSlider, SLOT(setValue(int))); … } // setupUi
(5)編譯運(yùn)行,如圖3-4所示。用鼠標(biāo)分別改變整數(shù)旋轉(zhuǎn)框SpinBox和滑動(dòng)條horizontalSliderr,會(huì)發(fā)現(xiàn)兩者建立了聯(lián)動(dòng)的關(guān)系,同時(shí),整數(shù)旋轉(zhuǎn)框SpinBox建立了和主窗口的關(guān)聯(lián),在狀態(tài)條顯示數(shù)值。

圖3-4 信號(hào)和槽的演示
- 數(shù)據(jù)科學(xué)實(shí)戰(zhàn)手冊(cè)(R+Python)
- Node.js Design Patterns
- Java 開(kāi)發(fā)從入門(mén)到精通(第2版)
- 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言)
- The DevOps 2.4 Toolkit
- Java EE 7 Performance Tuning and Optimization
- Java Web程序設(shè)計(jì)任務(wù)教程
- 自學(xué)Python:編程基礎(chǔ)、科學(xué)計(jì)算及數(shù)據(jù)分析(第2版)
- AI自動(dòng)化測(cè)試:技術(shù)原理、平臺(tái)搭建與工程實(shí)踐
- Mastering Apache Camel
- MongoDB Cookbook
- Isomorphic Go
- 菜鳥(niǎo)成長(zhǎng)之路
- Python自動(dòng)化運(yùn)維:技術(shù)與最佳實(shí)踐
- 算法學(xué)習(xí)與應(yīng)用從入門(mén)到精通