我剛開始使用Qt,我對整個信號插槽系統感到迷茫。
我瞭解一般概念,但我不明白什麼是設計我的GUI代碼的正確方法。 它應該是一個類的層次結構,指向彼此的指針?例如,如果我有一個主窗口,比如W1
,按鈕B1
應該打開另一個窗口W2
。
這是相當顯而易見的,爲什麼W1
的類應該持有一個指向B1
,但似乎我需要保持指針W2
的課,爲了B1
的clicked()
信號連接的W2
一些定製的插槽,和我不明白爲什麼......信號時隙機制不是被設計成通用的而不是具體的實例明智的?設計這個例子代碼的正確方法是什麼?用Qt設計一個圖形用戶界面的正確方法
2
A
回答
1
連接總是在類的實例之間創建。信號和插槽是通知B類的一個實例在A類實例中存在變化或事件的機制。
下面是類W1的設計,其將顯示當按鈕B1被點擊時的窗口W2。我跳過了W1類的初始化,也獲得了按鈕B1,因爲沒有幾種方法可以創建窗口的UI。我加了檢查連接是否成功,只是爲了安全(我的習慣)。
class W1 :public QWidget
{
public:
A(QWidget *parent = 0):QWidget(parent)
{
//init
B1 = getB1();
if(!connect(B1,SIGNAL(clicked()),this,SLOT(show_W2())))
qFatal("%s %i connection failed B1->clicked this->show_W2",__FILE__,__LINE__);
}
public slots:
void show_W2()
{
QWidget *W2 = new Window2(this->parent());
//create window
}
protected:
QPushButton *B1;
}
這是不同的方法來你的例子,其中類W1現在不任何有關類W2:
class W1 :public QWidget
{
public:
A(QWidget *parent = 0):QWidget(parent)
{
//init
B1 = getB1();
if(!connect(B1,SIGNAL(clicked()),this,SIGNAL(B1_clicked())))
qFatal("%s %i connection failed B1->clicked this->B1_clicked",__FILE__,__LINE__);
}
signals:
B1_clicked()
}
void MainWindow::creatW1()
{
W1 *_w1 = new W1;
if(!connect(_w1,SIGNAL(B1_clicked()),this,SLOT(createW2())))
qFatal("%s %i connection failed _w1->B1_clicked this->show_W2",__FILE__,__LINE__);
}
3
設計此示例代碼的正確方法是什麼?
使用Qt Designer創建一個簡單的UI並查看它生成的內容。當我開始使用Qt時,這幫助了我很多。
+0
這正是我所做的一切,但我如何創建2個部件之間的連接/類?信號插槽編輯器無法識別其他類插槽... –
+2
在您的代碼中手動連接這些插槽。請參閱QObject :: connect()。 – arrowd
相關問題
- 1. 什麼是製作圖形用戶界面的正確方法
- 2. C++指針圖形用戶界面QT
- 3. 圖形用戶界面 - actionListener方法
- 4. C#正確的方式來設計/實現此用戶界面?
- 5. iPhone用戶界面設計方法 - 正在使用Excel篩選
- 6. 圖形用戶界面(GUI)的Python包的正確佈局
- 7. 圖形用戶界面設計:禁用標籤?
- 8. 漂亮的,設計友好的圖形用戶界面庫
- 9. 正確的用戶界面設計與ASP.Net
- 10. 改善圖形用戶界面/網站的設計
- 11. Android用戶界面設計
- 12. iPhone用戶界面設計
- 13. Java圖形用戶界面
- 14. 圖形用戶界面
- 15. 圖形用戶界面
- 16. 圖形用戶界面 - Tkinter
- 17. 圖形用戶界面無法打開
- 18. Android:如何正確設計用戶界面
- 19. 什麼是設計的JavaFX 2.0的圖形用戶界面的最佳方式?
- 20. 圖形用戶界面重複xib後GUI不正確?
- 21. 圖形用戶界面沒有正確更新
- 22. Java圖形用戶界面:使座標正確對齊
- 23. 在線圖形用戶界面設計工具
- 24. 使用兩個用戶界面 - Qt 5.5
- 25. 使用Hadoop的圖形用戶界面
- 26. Matlab圖形窗口轉換(屏幕轉換 - 圖形用戶界面設計)
- 27. 一個很好的用戶界面設計,用於評估.Net
- 28. Qt的C++圖形用戶界面的桌面應用程序的聲子
- 29. 圖形用戶界面更新和控制同時在qt
- 30. 分層面板圖形用戶界面
在哪裏我可以找到如何正確初始化小部件的類? – Sugar
你的意思是Ui初始化?如果你已經安裝了Qt Creator,使用選項「Create form」創建Qt GUI項目,並檢查生成的代碼。在大多數情況下,這是推薦的初始化方式。 – firescreamer
在大多數情況下,UI初始化是手動的。即使在Qt的例子和教程中。這有點令人驚歎。生成的代碼很有幫助。 – Sugar