不使用UI文件编程
以按钮使用为例
设置按钮的文本
设置按钮的位置
设置按钮的大小
设置主窗口大小
用代码的方式设置按钮,进行编程
mainwindow.cpp
#include "mainwindow.h"
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// pushButton = new QPushButton();
// pushButton->show();//这种做法按键与窗口不关联
pushButton = new QPushButton(this); // 这种做法按键与窗口关联,父对象调用了show,可以继承父类可见
pushButton->setText("我是个按钮");
pushButton->setGeometry(50, 150, 100, 50); // 设置按钮大小和位置
this->resize(800, 400); // 设置窗口大小
}
MainWindow::~MainWindow()
{}
mainwindow.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
QPushButton *pushButton;
};
#endif // MAINWINDOW_H
Qt中Object Tree
■为什么需要设置父对象
■如何设置父对象(两种方法)
■
myWidget.h文件
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
class MyWidget : public QWidget {
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = nullptr);
~MyWidget(); // 声明析构函数
signals:
};
#endif // MYWIDGET_H
myWidget.cpp文件
#include "mywidget.h"
#include <QDebug>
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{}
MyWidget::~MyWidget()
{
qDebug() << "MyWidget析构函数" << endl;
}
widget.cpp文件
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
// 为什么需要设置父对象,因为窗口需要互相联系,比如A需要显示在B上面,A需要指定B为父关系
// pushButton = new QPushButton(this);
// pushButton = new QPushButton();
// pushButton->show();
// 设置父对象的两种方法
// 1.通过构造函数传参
// 2.通过setParent()方法
pushButton = new QPushButton();
pushButton->setParent(this);
// myWidget = new MyWidget();
myWidget = new MyWidget(this);
//Qt 的对象树机制目的是为了方便管理内存
// delete myWidget;//在这里或者在窗口析构函数中
}
Widget::~Widget()
{
// delete myWidget; // 在这里或者在窗口析构函数中
}