Qt 如何获取qpushbutton上的文本?

Qt 如何获取qpushbutton上的文本?,qt,qwidget,Qt,Qwidget,我正在通过QUiloader加载.ui文件,并在我的应用程序中显示GUI QWidget *mywidget = loader.load(file, this); QList<QWidget*> wlist = mywidget.findChildren<QWidget *>() 当QPushbutton和其他小部件组合为QWidget时,您知道如何从它们获取文本吗 谢谢。您应该搜索QPushButtons而不是QWidgets: QList<QPushButto

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

QWidget *mywidget = loader.load(file, this);
QList<QWidget*> wlist = mywidget.findChildren<QWidget *>()
当QPushbutton和其他小部件组合为QWidget时,您知道如何从它们获取文本吗


谢谢。

您应该搜索QPushButtons而不是QWidgets:

QList<QPushButton*> blist = widget.findChildren<QPushButton*>();
使用
->
,因为您访问的是指针,而不是小部件。您还应该检查findChildren()函数是否返回足够多的按钮。当通过无效索引访问列表项时,可能会出现崩溃或断言

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

更新:如果您搜索QWidget并对每个QWidget进行强制转换,则需要注意获取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();
   }
}
QList-wlist=widget.findChildren();
foreach(QWidget*w,wlist)
{
QPushButton*b=动态投影(w);
//如果“w”不是按钮,“b”是空PTR
如果(b)
{
QString btext=b->text();
}
}

尝试将QWidget转换为QPushButton,然后可以使用QPushButton::text()函数。我确实转换了它。谢谢。你使用哪种类型的演员?我的演员是这样的:dynamic_cast(wlist).text();我认为qobject_cast()的速度要快一点(至少在Qt4.0.0中是这样),但这很好。无论如何,别忘了事后检查nullptr。嘿,谢谢。我需要得到所有的小部件,因此我这样做了。在(1)处,我从循环中复制了代码,对不起。
QString btext = blist.at(1)->text();
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();
   }
}