【发布时间】:2023-03-18 23:58:01
【问题描述】:
我正在尝试从我的 Qt 窗口(QT 版本 5.12.2 并使用 C++)中删除默认的 Windows 标题栏,同时仍保留窗口边框。我使用标志Qt::CustomizeWindowHint 或多或少地实现了这一点。但是,这会将窗口边框更改为白线,而不是默认边框。
应用Qt::CustomizeWindowHint 标志后边框的外观示例:
如您所见,这些不是正常的 Windows 窗口边框。
如何更改/编辑这些边框(即更改它们的颜色)或如何在删除标题栏的同时保留默认的 Windows 窗口边框?
这是一个最小的可重现示例:
main.cpp:
int main(int argc, char* argv[]) {
QApplication application(argc, argv);
launcher mainWindow;
//debugChecks();
mainWindow.setWindowFlags(Qt::Window | Qt::CustomizeWindowHint | Qt::MSWindowsFixedSizeDialogHint);
mainWindow.setWindowTitle("Test");
mainWindow.show();
return application.exec();
}
启动器.h
#pragma once
#include <QtWidgets/QMainWindow>
#include <QMouseEvent>
#include <QPoint>
#include "ui_launcher.h"
class launcher : public QMainWindow {
Q_OBJECT
public:
launcher(QWidget* parent = Q_NULLPTR);
private:
Ui::launcherClass ui;
void mousePressEvent(QMouseEvent* eventVar);
void mouseMoveEvent(QMouseEvent* eventVar);
int mouseClickX = 0;
int mouseClickY = 0;
};
launcher.cpp
#include "launcher.h"
launcher::launcher(QWidget* parent) : QMainWindow(parent) {
ui.setupUi(this);
}
void launcher::mousePressEvent(QMouseEvent* eventVar) {
mouseClickX = eventVar->x();
mouseClickY = eventVar->y();
}
void launcher::mouseMoveEvent(QMouseEvent* eventVar) {
move(eventVar->globalX() - mouseClickX, eventVar->globalY() - mouseClickY);
}
【问题讨论】:
-
@eyllanesc 我添加了一个。如果您需要更多信息,请告诉我。