如何在qpushbutton上获取文本?

时间:2014-03-22 14:53:10

标签: qt qwidget

我通过QUILoader加载.ui文件,并在我的应用程序中显示GUI。

QWidget *mywidget = loader.load(file, this);
QList<QWidget*> wlist = mywidget.findChildren<QWidget *>()

我想知道QPushbutton上的文字是什么。我知道有一个方法text()来从Pushbutton获取文本,但是当我这样做时它无法访问:

QString btext = wlist.at(1).text();

我知道如何将QPushbutton和其他Widgets的文本归为QWidget时如何获取文本?

感谢。

1 个答案:

答案 0 :(得分:1)

您应该搜索QPushButtons而不是QWidgets:

QList<QPushButton*> blist = widget.findChildren<QPushButton*>();

你的代码仍然无法编译。最后一行应为:

QString btext = blist.at(1)->text();

使用->,因为您正在访问指针,而不是窗口小部件。此外,您应该检查findChildren()函数是否实际返回足够的按钮。当您通过无效索引访问列表项时,您将收到崩溃或断言。

另请注意,at(1)不会返回列表中的第一项而是第二项(列表从0开始)。

更新:如果您搜索QWidgets并投射每个QWidgets,您需要注意获取nullptr:

QList<QWidget*> wlist = widget.findChildren<QWidget*>();
foreach (QWidget* w, wlist)
{
   QPushButton* b = dynamic_cast<QPushButton*>(w);
   // If "w" is not a button "b" is nullptr
   if (b)
   {
      QString btext = b->text();
   }
}