(资料图片)
要在QT中实现按钮弹出一个临时手动绘制的界面,可以使用QWidget类并在其上手动绘制需要显示的内容。
以下为示例代码:
MainWindow.h文件:
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include namespace Ui {class MainWindow;}class MainForm : public QWidget // 自定义窗口类,继承自QWidget{ Q_OBJECTpublic: explicit MainForm(QWidget *parent = nullptr); ~MainForm();protected: void paintEvent(QPaintEvent *event); // 重写paintEvent函数,在此函数中绘制需要显示的内容private: Ui::MainWindow *ui;};class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow();private slots: void on_pushButton_clicked();private: Ui::MainWindow *ui; MainForm *mainForm; // 创建一个MainForm对象};#endif // MAINWINDOW_H
MainWindow.cpp文件:
#include "MainWindow.h"#include "ui_MainWindow.h"#include MainForm::MainForm(QWidget *parent) : QWidget(parent){ setFixedSize(300, 300); // 设置窗口大小}MainForm::~MainForm(){}void MainForm::paintEvent(QPaintEvent *event){ QPainter painter(this); painter.fillRect(rect(), Qt::white); // 填充白色背景 painter.setPen(Qt::black); painter.setFont(QFont("Arial", 16)); painter.drawText(rect(), Qt::AlignCenter, tr("This is a test!")); // 绘制文本}MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); mainForm = new MainForm(this); // 创建一个MainForm窗口对象}MainWindow::~MainWindow(){ delete ui; delete mainForm; // 在此处删除MainForm对象,避免内存泄漏}void MainWindow::on_pushButton_clicked(){ mainForm->show(); // 显示MainForm窗口}
在主窗口中,我们创建了一个MainForm对象,并在其上手动绘制需要显示的内容。在按钮点击事件中调用show()函数显示窗口。
注意:为了避免内存泄漏,在主窗口关闭时手动删除mainForm对象,可以在MainWindow.cpp文件的析构函数中添加delete mainForm;。
【领 QT开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】
点击这里:
关键词: