2012-06-26 55 views
0

我已经习惯了Java和QT/C++的新特性,并且在创建一个QLabel时会遇到一些问题,当人们选择QListWidgetItem时,它会更改文本。创建监听QLabel

在我的ui_GraphicsView.h我有setupUI()它使对象。 我试着做一个布局它的父母。

label = new QLabel(verticalLayout); 
    label->setObjectName(QString::fromUtf8("label")); 
    verticalLayout->addWidget(label); 

在我的.cpp文件我利用连接在构造函数:

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) 

一切工作之前还有我做了上述调整。任何想法是什么导致这个错误?

回答

2

阅读错误。 QLabel :: QLabel是构造函数。构造函数期望指向小部件的指针,而不是布局。 事实上,你想要做以下几点:

label = new QLabel(parent_widget); 
label->setLayout(layout) 

编辑:奇怪,没有人注意到我的错误。在标签上设置布局很奇怪。更好的是

label=new QLabel(); 
layout->addWidget(label). 

标签将获得布局的所有者作为父项。

+0

好的,我真的不知道什么样的widget会是我的parents_widget。通常会是什么? –

+0

在大多数情况下,父窗口小部件应该是小部件所在的窗口小部件 –

+0

我现在明白了。谢谢! –