Qt Framework完整的软件开发框架
Qt Creator 11.0.3离线版本安装包下载链接。这个需求登录邮箱账号,进行下载。该版本是最新的版本,基于QT6.4.3框架。
Qt Framework 包含一整套高度直观、模块化 的C++ 库类,并加载可简化应用程序开发的API。Qt 可生成高可读、易维护和可重用的代码,具有较高的运行时性能,且内存占用小——最重要的是,Qt是跨平台的。安装的时候一定要选择Desktop Qt 6.6.0 MinGW 64-bit构建套件。否则不能编译运行

模态框与非模态框的创建
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//点击信号按钮,出现对话框 信号 槽 lomada表达式
connect(ui->actionnewSave,&QAction::triggered,[=](){
// 对话框的分类
// 模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口对话框)
// 模态对话框
QDialog dlg(this);
dlg.resize(200,400);
dlg.exec(); // 阻塞
qDebug() << "模态框弹出了";
});
}
MainWindow::~MainWindow()
{
delete ui;
}
cpp
登录窗口的绘制。首先需要设置窗口的工具栏,title为空。不能设置成SplashScreen(闪屏,启动动画)。否则会导致无法出现应用图标。使用setWindowFlags(Qt::FramelessWindowHint);设置成无边框的窗口。然后重写拖动的方法。实现三个事件的虚函数即可
#include <QMouseEvent>
// 虚函数
void TLoginDialog::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
m_moving = true;
m_lastPos = event->globalPosition().toPoint()-this->pos();
}
return QDialog::mousePressEvent(event);
}
void TLoginDialog::mouseReleaseEvent(QMouseEvent *event)
{
m_moving = false;
event->accept();
}
void TLoginDialog::mouseMoveEvent(QMouseEvent *event)
{
QPoint eventPos = event->globalPosition().toPoint();
//qDebug() << event->button() ;
if(m_moving && (event->button() == Qt::NoButton) &&
(eventPos-m_lastPos-pos()).manhattanLength() > QApplication::startDragDistance())
{
move(eventPos - m_lastPos);
m_lastPos = eventPos - pos();
//qDebug() << eventPos << m_moving;
}
return QDialog::mouseMoveEvent(event);
}
cpp
创建渐变色的逻辑代码
// 创建渐变
QLinearGradient gradient(0, 0, 0, this->size().height());
gradient.setColorAt(0, QColor(38, 72, 198)); // 起始颜色为红色
gradient.setColorAt(1, QColor(96, 73, 215)); // 结束颜色为蓝色
// 设置渐变背景
QPalette palette;
palette.setBrush(QPalette::Window, QBrush(gradient));
this->setPalette(palette);
cpp
设置窗口圆角的方法
// 设置窗口的形状为圆角
int radius = 6; // 圆角半径
// 创建 QPainterPath 来定义窗口形状
QPainterPath path;
path.addRoundedRect(0, 0, this->size().width(), this->size().height(), radius, radius);
// 设置窗口的形状
this->setMask(path.toFillPolygon().toPolygon());
cpp
本文由 木之下 发表, 最后编辑时间为:2023-11-29 21:19:14
(完)
(完)