2011-01-24 39 views
4

我正在玩Qt,主要是爲了重寫一箇舊的java應用程序,並且讓我的自己有點困惑。如何將一個小部件(例如QPushButton)動態添加到在設計器中構建的佈局

我首先應該解釋一下,C++不是我的功夫,這可能是問題的原因。

我想要做的是將一個簡單的QPushButton添加到一個主窗口中的垂直佈局,該窗口在運行時已經在qt設計器中構建。

我的示例代碼是這樣......

QPushButton button = new QPushButton(); 

QString text("Testing Buttons"); 

button.setText(text); 

//How do we add children to this widget?? 

ui->myLayout->addWidget(button); 

是我得到的錯誤如下...

/home/graham/myFirstApp/mainwindow.cpp:22: error: conversion from ‘QPushButton*’ to non-scalar type ‘QPushButton’ requested

/home/graham/myFirstApp/mainwindow.cpp:27: error: no matching function for call to ‘QVBoxLayout::addWidget(QPushButton&)’

/home/graham/myFirstApp/../qtsdk-2010.05/qt/include/QtGui/qboxlayout.h:85: candidates are: void QBoxLayout::addWidget(QWidget*, int, Qt::Alignment)

現在我所知道的第一個錯誤都有事做指針,但我不知道是什麼,如果任何人能夠清除我的困惑,並提供很好的示例代碼。

問候

格雷厄姆。

回答

6

這只是一個C++問題,當您使用new-operator時,您需要使用星號將按鈕聲明爲指針。

QPushButton* button = new QPushButton(); 
button->setText(text); 
ui->myLayout->addWidget(button); 
+0

謝謝你,我做了一些改變,並對指針進行了一些閱讀。我也有一個愚蠢的錯誤,那就是我在忘記清理桌面之後忘記清理這個項目,這並沒有幫助。 – Graham 2011-01-25 20:03:10

2

QPushButton button = new QPushButton();

一個指向QPushButton不是QPushButton。這就是你的編譯器喋喋不休,這就是你的問題。

相關問題