|
1Qter豆
发现qt由类创建对象有很多种写法,诸如创建一个QPushButton对象。书上写QPushButton *button = new QPushButton("button",this);,有写button = new QPushButton("button",this);,有写QPushButton button;的不知道有什么区别。但实际使用的时候出现的问题还是比较多,我开始都是写第一种,但程序老是崩溃,例如:
#include <QtGui>
#include "mainwindow.h"
Widget::Widget(QWidget *parent) :QWidget(parent){ this->setWindowTitle(tr("button label")); QPushButton *button = new QPushButton("button",this); QLabel *label = new QLabel("label",this); QVBoxLayout *layout = new QVBoxLayout; connect(button,SIGNAL(clicked()),this,SLOT(buttonClicked())); layout->addWidget(label); layout->addWidget(button); this->setLayout(layout);}
void Widget::buttonClicked(){ label->setText("clicked");}这样写,一点按钮程序就崩溃掉了,我百思不得其解。后来把程序修改为就正确了
#include <QtGui>
#include "mainwindow.h"
Widget::Widget(QWidget *parent) :QWidget(parent){ this->setWindowTitle(tr("button label")); button = new QPushButton("button",this); label = new QLabel("label",this); layout = new QVBoxLayout; connect(button,SIGNAL(clicked()),this,SLOT(buttonClicked())); layout->addWidget(label); layout->addWidget(button); this->setLayout(layout);}
void Widget::buttonClicked(){ label->setText("clicked");}如果写成QPushButton button;程序中涉及button的->符号时都要改成.。自学有一个月了,差不多,进步好大,继续努力。
|
最佳答案
查看完整内容
1.直接在程序中定义的button,可以写成:QPushButton *button = new QPushButton("button",this);
不过这样在其他函数里面不好调用button。
2.可以先在.h中声明QPushButton *button;
然后在.cpp文件中使用button = new QPushButton("button",this);
这样在.cpp里面的其他函数里面也可以方便调用button。
3.一般不可以直接写QPushButton button;
这是临时变量,出了函数就销毁了。 ...
|