【问题标题】:Waiting till the QLineEdit text changes等到 QLineEdit 文本更改
【发布时间】:2013-02-21 12:59:36
【问题描述】:

我想使用 QLineEdit 来获取我想要使用的整数值。我的问题是我想等到输入文本。如果我可以在开始时提供一个默认文本,在单击 QEditLine 后会自动删除它,那也很好,例如:

对于第一点,我尝试了这个,但它没有用:

 ......
int num =0;
QLineEdit *qtest = new QLineEdit();
........
mailayout->addWiget(qtest);// when I use the while loop the QLineEdit won't be added !! 
while(num ==0 ){
   num = qtest->text.toInt();
 }
.............

程序停留在while循环中,有什么想法我做错了吗?

【问题讨论】:

  • 从您发布的代码来看,“num”永远不会是“0”以外的任何东西,因此循环自然会无限循环。你必须做一些事情来使“num”不同,比如从 QLineEdit 中解析出一个数字。干杯!
  • num 会在循环中改变它的值 ??
  • @Engine 不,它不会,因为QLineEdit 依赖于事件队列来输入文本,但事件队列永远无法处理,因为执行被卡在了 while循环。
  • @Engine 您需要阅读信号和插槽以及事件循环。否则你将无法理解如何为 Qt 编程。
  • 您只需要使用editingFinished() 信号

标签: c++ qt


【解决方案1】:

使用setPlaceholderTest(const QString&) 显示用户未输入任何内容的文本。

不要轮询QLineEdit 的更改,这是 Qt,所以使用信号。

connect( qtest, SIGNAL( editingFinished() ),
         someContainerObj, SLOT( myLineEditSlot() ) );
...
ContainerObj::myLineEditSlot()
{
    int num = qtest->text().toInt();
    ...
}

【讨论】:

  • 感谢回答 setPlaceholderText 工作,但第二个仍然不起作用
  • 怎么不行?你是怎么编码的?更新您的示例代码,以便我们查看您所做的工作。
  • @Engine 你读过我说的话吗?我建议你听从 satuon 的建议,因为你缺乏基本的 Qt 知识。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 2013-01-03
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
相关资源
最近更新 更多