我有一些简单的小部件层次结构 看起来像这样:
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(423, 479);
MainWindow->setLayoutDirection(Qt::LeftToRight);
MainWindow->setLocale(QLocale(QLocale::English, QLocale::UnitedStates));
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
horizontalLayout = new QHBoxLayout(centralwidget);
horizontalLayout->setSpacing(0);
horizontalLayout->setContentsMargins(0, 0, 0, 0);
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
StreamViewWidget = new StreamView(centralwidget);
StreamViewWidget->setObjectName(QString::fromUtf8("StreamViewWidget"));
horizontalLayout_2 = new QHBoxLayout(StreamViewWidget);
horizontalLayout_2->setSpacing(0);
horizontalLayout_2->setContentsMargins(0, 0, 0, 0);
horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
streamList = new StreamList(StreamViewWidget);
streamList->setObjectName(QString::fromUtf8("streamList"));
streamList->setStyleSheet(QString::fromUtf8("background-color: rgb(171, 251, 255);"));
horizontalLayout_2->addWidget(streamList);
horizontalLayout->addWidget(StreamViewWidget);
MainWindow->setCentralWidget(centralwidget);
menubar = new QMenuBar(MainWindow);
menubar->setObjectName(QString::fromUtf8("menubar"));
menubar->setGeometry(QRect(0, 0, 423, 22));
MainWindow->setMenuBar(menubar);
statusbar = new QStatusBar(MainWindow);
statusbar->setObjectName(QString::fromUtf8("statusbar"));
MainWindow->setStatusBar(statusbar);
现在StreamViewWidget和streamList;晋升,我在那里上课 现在从StreamViewWidget我想要访问streamList。 所以我尝试这样做,但它失败了,我得到空的结果。
StreamView::StreamView(QWidget *parent) :QWidget(parent)
{
pStreamList = this->findChild<StreamList*>("streamList");
QList<StreamList *> widgets = this->findChildren<StreamList *>("streamList");
}
当我在StreamView中执行QObject :: dumpObjectTree() 我得到:所以我猜它不是StreamView的孩子,但我怎么能得到streamList?
QWidget::centralwidget
QHBoxLayout::horizontalLayout
StreamView::
任何想法我在这里做错了什么? 感谢
答案 0 :(得分:1)
致电时
horizontalLayout_2->addWidget(streamList);
horizontalLayout2
成为streamList
的父级。 horizontalLayout2
的父级为StreamViewWidget
,StreamViewWidget
不是streamList
的父级。这有道理吗?
但除此之外的一切都是如此。它不起作用的原因可能是因为你试图找到一个尚不存在的小部件的子代。你是StreamView
的构造函数,还记得吗?