我通过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时如何获取文本?
感谢。
答案 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();
}
}