2012-04-17 354 views
3

QT的新手只是在玩弄它,看看它是否會讓我喜歡使用,如果願意的話還想繼續深入學習該程序。QT創建按鈕,將文本添加到文本編輯框

用按鈕概念掙扎了一下。我創建了一個按鈕和一個textedit區域。我想在按下按鈕時將一串文本添加到textedit窗口中。

我似乎無法找到谷歌或QT維基上的任何內容來實現這一目標。有人能指出我的方向,所以我至少可以開始使用這個偉大的工具。

回答

4

在Qt中,信號和插槽正用於在對象之間進行通信。 This應該爲您提供必要的信息以幫助您入門。

當發生特定事件時發出信號。 Qt的小部件有許多預定義的信號,但我們總是可以對小部件進行子類化,以將自己的信號添加到它們。插槽是爲響應特定信號而調用的函數。 Qt的窗口有許多預定義的插槽,但通常的做法是子類widgets和添加自己的插槽,這樣你可以處理你所感興趣的信號。

所以,在您的特定情況下,你需要連接與您的自定義插槽QPushButton clicked()信號確實需要什麼(添加文本到textarea的):

QPushButton * btn = new QPushButton("Button", this); 
connect(btn, SIGNAL(clicked()), this, SLOT(onBtnClicked())); 

我們需要聲明我們的插槽頭:

private slots: 
    void onBtnClicked(); 

並定義它:

void MySpecialWidget::onClick() 
{ 
    // Do what is to be done 
} 

如果你所做的一切都是正確的,應該工作...否則看看控制檯,看是否有看起來像任何消息:

Object::connect: No such slot MySpecialWidget::onClick() in ... 

Object::connect: No such signal .... 

他們應該給你提示發生了什麼。

最後,我建議看看廣泛的Qt examples

+1

@twigg - 只是添加到匿名的答案。起初看起來很奇怪,但所有的桂編程起初都很奇怪。 Qt Signal/Slot比大多數其他方法好得多 - 只要堅持下去吧 – 2012-04-17 21:45:16

+0

非常感謝你提供了很多非常好的信息,這讓我現在真的很感激,非常感謝 – twigg 2012-04-29 10:36:32

相關問題