QT的新手只是在玩弄它,看看它是否會讓我喜歡使用,如果願意的話還想繼續深入學習該程序。QT創建按鈕,將文本添加到文本編輯框
用按鈕概念掙扎了一下。我創建了一個按鈕和一個textedit區域。我想在按下按鈕時將一串文本添加到textedit窗口中。
我似乎無法找到谷歌或QT維基上的任何內容來實現這一目標。有人能指出我的方向,所以我至少可以開始使用這個偉大的工具。
QT的新手只是在玩弄它,看看它是否會讓我喜歡使用,如果願意的話還想繼續深入學習該程序。QT創建按鈕,將文本添加到文本編輯框
用按鈕概念掙扎了一下。我創建了一個按鈕和一個textedit區域。我想在按下按鈕時將一串文本添加到textedit窗口中。
我似乎無法找到谷歌或QT維基上的任何內容來實現這一目標。有人能指出我的方向,所以我至少可以開始使用這個偉大的工具。
在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。
@twigg - 只是添加到匿名的答案。起初看起來很奇怪,但所有的桂編程起初都很奇怪。 Qt Signal/Slot比大多數其他方法好得多 - 只要堅持下去吧 – 2012-04-17 21:45:16
非常感謝你提供了很多非常好的信息,這讓我現在真的很感激,非常感謝 – twigg 2012-04-29 10:36:32