Also, zurück auf plattformspezifische Win32 wm_nccalcsize
Code: Select all
#include
#include
#include
#include
#include
class MyGLWidget : public QOpenGLWidget {
Q_OBJECT
protected:
void initializeGL() override { QOpenGLContext::currentContext()->functions()->glClearColor(1.0f, 0.0f, 1.0f, 1.0f); }
};
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow() { setCentralWidget(new MyGLWidget); }
protected:
bool nativeEvent(const QByteArray& eventType, void* message, qintptr* result) override
{
MSG* msg = reinterpret_cast(message);
switch (msg->message) {
case WM_NCCALCSIZE: {
NCCALCSIZE_PARAMS* params = (NCCALCSIZE_PARAMS*)(msg->lParam);
params->rgrc[0].right -= 8; // Sizes hard-coded for brevity
params->rgrc[0].left += 8;
params->rgrc[0].bottom -= 8;
*result = 0;
return true;
}
// case WM_NCHITTEST omitted for brevity
}
return false;
}
};
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
#include "main.moc"
< /code>
Titlebar.pro:
QT += core gui openglwidgets widgets
SOURCES += main.cpp
Ersetzen Sie die Qopenglwidget mit einem normalen Qwidget und es sieht bei allen Maschinen richtig aus. MainWindow :: NativeEvent () und setze qt :: CustomizeWindowHt auf dem Fenster stattdessen und das Problem des schwarzen Rechtecks verschwindet, aber das oben genannte dicke weiße Rahmenproblem tritt stattdessen stattdessen auf. /> Gibt es eine Möglichkeit, Qt :: CustomizeWindowHint zu verwenden, der das Problem des weißen Rahmens vermeidet, ohne den nativen Event () ? v6.2.0 unter Windows 10 V21H1. Bestimmte OpenGL -Treiber.