2012-04-17 360 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

相关问题