,
, Qt::FramelessWindowHint . , Windows , . , winapi. , , . -, Qt , . , , .
winapi Qt , . -, winapi Qt. Qt .
, winapi, , Qt . ( ) . . , Qt, , . . , Qt 4 QWidget::windowHandle " " Qt 5. , . , . ( Windows 8), :
#include "windows.h"
#include <QWindow>
show();
HWND hwnd = reinterpret_cast<HWND>(effectiveWinId());
LONG lStyle = GetWindowLong(hwnd, GWL_STYLE);
lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU);
SetWindowLong(hwnd, GWL_STYLE, lStyle);
setWindowFlags(windowFlags() | Qt::FramelessWindowHint);
windowHandle()->reportContentOrientationChange(Qt::PrimaryOrientation);
Window Qt (. QWindowsWindow Qt). , , . Qt, . , .
, , , Windows, #ifdef Q_OS_WIN.
,
. , , .
void MainWindow::mousePressEvent(QMouseEvent *e) {
if (!isMaximized() &&
e->button() == Qt::LeftButton &&
ui->title->geometry().contains(e->pos())) {
window_drag_start_pos = e->pos();
}
}
void MainWindow::mouseReleaseEvent(QMouseEvent *e) {
window_drag_start_pos = QPoint(0, 0);
}
void MainWindow::mouseMoveEvent(QMouseEvent *e) {
if (!window_drag_start_pos.isNull()) {
move(pos() + e->pos() - window_drag_start_pos);
}
}
void MainWindow::on_minimize_clicked() {
showMinimized();
}
void MainWindow::on_maximize_clicked() {
if (isMaximized()) {
showNormal();
} else {
showMaximized();
}
}
ui->title - , , QPoint window_drag_start_pos - .