QT开发中文网

用qt creator, 在widget上放一个centerwidget,在上面绘制,实现代码案例。

好的,下面是一个简单的代码案例:

  1. 创建一个新的Qt Widgets应用程序项目。
  2. 在mainwindow.ui中拖放一个widget和一个QPushButton控件,并将widget命名为centerWidget。
  3. 右键单击mainwindow.h文件并选择“添加类”,创建一个名为CenterWidget的新类,它将作为centerWidget的子类。确保选中“基于QWidget”的类模板。
  4. 在CenterWidget类中添加以下内容:
#include <QPainter>
#include <QPaintEvent>

class CenterWidget : public QWidget
{
public:
    explicit CenterWidget(QWidget *parent = nullptr);

protected:
    void paintEvent(QPaintEvent *event) override;

private:
    QColor m_color;
};

CenterWidget::CenterWidget(QWidget *parent)
    : QWidget(parent)
{
    // 设置背景色
    m_color = Qt::white;
}

void CenterWidget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event)

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true); // 抗锯齿
    painter.fillRect(rect(), m_color); // 填充背景色

    // 绘制文本示例
    QFont font("Arial", 20);
    painter.setFont(font);
    painter.setPen(Qt::red);
    painter.drawText(rect(), Qt::AlignCenter, "Hello, World!");
}
  1. 在mainwindow.h中包含CenterWidget头文件,并添加以下成员变量:
#include "centerwidget.h"

class MainWindow : public QMainWindow
{
public:
     explicit MainWindow(QWidget *parent = nullptr);

private:
     QPushButton *m_button;
     CenterWidget *m_centerWidget; // 新增成员变量
};
  1. 在mainwindow.cpp的构造函数中添加以下代码,将centerWidget设置为窗口的中心控件,并将按钮连接到一个槽:
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    m_button = new QPushButton("Change Color", this);
    connect(m_button, &QPushButton::clicked, this, [this](){
        // 改变背景色
        m_centerWidget->m_color = QColor(qrand() % 256, qrand() % 256, qrand() % 256);
        m_centerWidget->update();
    });

    m_centerWidget = new CenterWidget(this);
    setCentralWidget(m_centerWidget);

    resize(400, 300);
}
  1. 运行程序,点击按钮,可以看到绘制在centerWidget上的文本会随机改变背景色。

希望这个简单的示例能够帮助您实现在widget上绘制图形。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=3024

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?