2012-06-26 69 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

我現在明白了。謝謝! –