创建一个QMainWindow或QWidget。
设置窗口样式为无边框:setWindowFlags(Qt::FramelessWindowHint)。
在窗口顶部绘制一个自定义的标题栏,可以使用QHBoxLayout和QPushButton等布局管理器和控件进行设计。
实现鼠标拖动功能,在标题栏上重载mousePressEvent、mouseMoveEvent和mouseReleaseEvent函数。
其中关键是第3步,下面是代码示例:
// 自定义标题栏
void MainWindow::createTitleBar()
QWidget* titleBar = new QWidget(this);
QHBoxLayout* layout = new QHBoxLayout(titleBar);
QPushButton* closeButton = new QPushButton("Close", titleBar);
connect(closeButton, &QPushButton::clicked, this, &MainWindow::close);
// 添加其他控件
layout->addWidget(closeButton);
titleBar->setLayout(layout);
titleBar->setFixedHeight(30); // 标题栏高度
// 鼠标按下事件,记录鼠标位置
void MainWindow::mousePressEvent(QMouseEvent *event)
if (event->button() == Qt::LeftButton) {
isMousePressed = true;
mousePosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
// 鼠标移动事件,拖动窗口
void MainWindow::mouseMoveEvent(QMouseEvent *event)
if (isMousePressed && (event->buttons() && Qt::LeftButton)) {
move(event->globalPos() - mousePosition);
event->accept();
// 鼠标释放事件,停止拖动
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
if (event->button() == Qt::LeftButton) {
isMousePressed = false;
event->accept();
在以上代码中,createTitleBar函数用于创建自定义标题栏,在其中添加了一个关闭按钮和其他控件。setFixedHeight函数用于设置标题栏的高度。
而mousePressEvent、mouseMoveEvent和mouseReleaseEvent函数则是实现鼠标拖动窗口的功能。其中,isMousePressed记录鼠标是否按下,mousePosition保存鼠标位置,在move函数中实现移动窗口的效果。
本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=3519
Qt中的D:\QtProject\Qt_AddressBookManagementSystem\mainwidget.cpp:27: error: C2065: “TableColumn”: 未声明的标识符
QSqlQueryModel是