
比如说你自定义了一个 Widget,它继承自 QWidget,示意如下:
//widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui/QWidget>
#include <QPushButton>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0)
~Widget()
private:
QPushButton buttonA
QPushButton buttonB
QPushButton* pButton
}
#endif // WIDGET_H
在上面的头文件中定义了两个button以及一个指针,下面是源文件
//widget.cpp
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
buttonA.setText("buttonA")
buttonB.setText("buttonB")
//在构造pButton时指定Widget为pButton的父窗口
//注铅码厅意:由于pButton继承自QObject并且你为他指定了父窗口,
//父类中的QObjetc会对pButton的内存进行管理,并在合适的时候释放内存,
//所以你不需要在Widget的析构函数中去进行delete pButton的 *** 作,
//建议使用new这种方式来构造子控件
pButton = new QPushButton(this)
pButton->setText("buttonC")
//指定Widget为buttonA和buttonB的父窗口
//如果你不指定他们的父窗口,那么这些控件将不可见
//你可以注释下两行中的某条语句,来测试控件是否可见
//目前两个控件都是可见的
buttonA.setParent(this)
buttonB.setParent(this)
/槐隐/移动控件到相应的坐标点
buttonA.move(100,100)
buttonB.move(100,150)
pButton->move(100,200)
}
Widget::~Widget()
{
}
//main.cpp
#include <QtGui/QApplication>
#include "widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv)
Widget w
w.show()
return a.exec()
}
这就是整个示例程序了,总的来说,要想窗体中的控件可见,你必须将该窗体设置成这些控件的父窗口。
今天根据教程-《Qt开发实例》学习遇到一个问题早饥稿,当在MainWindow类中添加qPushbutton后,按钮无法用鼠标点击,折腾了很久发现是MainWindow中private预先定义的Ui::MainWindow *ui 的原因,它通过ui->setupUi(this) 创建了一个位于窗口顶部的栏位,且至于了窗口最顶层,导致后来创建的qPushbutton被覆盖住了,所以无法点击
若将代码作以下改动:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
#include <QMouseEvent>//引用鼠标类头文件
namespace Ui {
class MainWindow
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0)
~MainWindow()
private:
// Ui::MainWindow *ui
QPushButton *btClose
}
#endif // MAINWINDOW_H
--------------------mainwindow.h
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
// ui(new Ui::MainWindow)
{
// ui->setupUi(this)
btClose = new QPushButton(this)
btClose->setText("关陆孝闭")
}
MainWindow::~MainWindow()
{
// delete ui
}
-----------------------------mainwindow.cpp
那按钮就可以起作用了肢银
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)