如何动态地将小部件(例如QPushButton)添加到设计器内置的布局中

时间:2011-01-24 21:18:11

标签: c++ qt qt-creator

我正在玩Qt,主要是想为symbian重写一个旧的java应用程序,我让自己有点困惑。

我首先应该解释一下C ++不是我的功夫,这可能是问题的原因。

我要做的是在主窗口中向垂直布局添加一个简单的QPushButton,该窗口在运行时已在qt designer中构建。

我的示例代码是这样的......

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:   错误:从'QPushButton *'转换   到非标量类型'QPushButton'   请求的

     

/home/graham/myFirstApp/mainwindow.cpp:27:   错误:没有匹配的呼叫功能   至   “QVBoxLayout :: addWidget(QPushButton&安培)”

     

/ home / graham / myFirstApp /../ qtsdk-2010.05 / qt / include / QtGui / qboxlayout.h:85:候选人是:void   QBoxLayout :: addWidget(QWidget *,int,   Qt的::取向)

现在我知道第一个错误与指针有关但我不知道是什么,如果有人能够解决我的困惑并提供很好的示例代码。

此致

格雷厄姆。

2 个答案:

答案 0 :(得分:6)

这只是一个C ++问题,当你使用new-operator时,需要使用星号将按钮声明为指针。

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

答案 1 :(得分:2)

QPushButton button = new QPushButton();

指向QPushButton的指针不是QPushButton。这就是你的编译器喋喋不休,这就是你的问题。