我习惯于Java和QT / C ++的新手,我在创建QLabel时遇到一些问题,只要有人选择QListWidgetItem就会改变文本。
在我的ui_GraphicsView.h中,我有setupUI()来创建对象。 我尝试将布局作为其父级。
label = new QLabel(verticalLayout);
label->setObjectName(QString::fromUtf8("label"));
verticalLayout->addWidget(label);
在我的.cpp文件中,我在构造函数中使用了connect:
connect(list_widget, SIGNAL(itemSelectionChanged(), this, SLOT(updataDetails())));
updateDetails()在我的selectionChanged()方法中执行,它传递一个字符串。
void GraphicsView::updateDetails(QString details){
label->setText(details);
}
这导致以下错误:
error: no matching function for call to ‘QLabel::QLabel(QVBoxLayout*&)
note: candidates are: QLabel::QLabel(const QLabel&)
note: QLabel::QLabel(const QString&, QWidget*, Qt::WindowFlags)
note: QLabel::QLabel(QWidget*, Qt::WindowFlags)
在我做出上述调整之前,一切都很顺利。知道是什么导致了这个错误吗?
答案 0 :(得分:2)
阅读错误。 QLabel :: QLabel是构造函数。构造函数需要指向窗口小部件的指针,而不是布局。 事实上,您想要做以下事情:
label = new QLabel(parent_widget);
label->setLayout(layout)
编辑:很奇怪,没有人注意到我的错误。在标签上设置布局很奇怪。更好的是
label=new QLabel();
layout->addWidget(label).
Label会将布局的所有者作为父级。