我有一个带有此标志的QMainWindow:
this->setWindowFlags(Qt::SubWindow);
如何禁止窗口移动,这样,保持这种窗口风格?
答案 0 :(得分:1)
在使用标准窗口控件时,我认为没有跨域Qt方法来实现这一点。
您可以尝试以下内容:
class Widget : public QWidget {
Q_OBJECT
public:
Widget()
: fixed_pos_(QPoint(100, 100)) {
setWindowFlags(Qt::SubWindow);
}
void SetFixedPos(const QPoint& pos) {
fixed_pos_ = pos;
}
protected:
void moveEvent(QMoveEvent* ev) {
if (ev->pos() != fixed_pos_)
move(fixed_pos_);
}
private:
QPoint fixed_pos_;
};
这些问题有一些问题,如闪烁,在鼠标发布之前不会更新,等等,每个操作系统也有所不同。
最有效的方法是让你的窗口成为Qt::FramelessWindowHint并自己呈现标题栏。这样,在处理标题栏上的事件时,你几乎可以做你想做的事。