我正在开发的应用程序有一个自定义 UI,需要我从主窗口中删除标题栏。不幸的是,我不知道如何制作它,以便我可以在屏幕上移动应用程序:)
我删除标题栏的代码如下:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent, Qt::CustomizeWindowHint), ui(new Ui::MainWindowClass)
{
ui->setupUi(this);
知道如何使用另一个小部件或主窗体窗口本身来移动窗口吗?
Thanks
最直观的方法是单击小部件表面并拖动。为了实现这一目标,您需要遵循一些步骤。
该方法如下:当用户在小部件内部按下时,设置一个布尔标志并存储鼠标的位置,然后当释放按钮时,将其设置为 false。下一步是移动小部件。在 mouseMoveEvent 中,检查是否设置了该标志。如果已设置,则采用鼠标的新位置。计算新位置与存储位置之间的差异。然后,将窗口的位置设置为原始位置+计算出的鼠标移动。然后存储新的鼠标位置。
所需的代码是这样的:
警告:此代码示例不正确,将导致拖动窗口时发生跳跃行为。请使用来自Qt 形状时钟示例反而。
/// Header contents:
class MyWidget : public QMainWindow
{
protected:
void mouseMoveEvent(QMouseEvent* event);
void mousePressEvent(QMouseEvent* event);
void mouseReleaseEvent(QMouseEvent* event);
private:
QPoint mLastMousePosition;
bool mMoving;
}
/// Source:
void MyWidget::mousePressEvent(QMouseEvent* event)
{
if(event->button() == Qt::LeftButton)
{
mMoving = true;
mLastMousePosition = event->pos();
}
}
void MyWidget::mouseMoveEvent(QMouseEvent* event)
{
if( event->buttons().testFlag(Qt::LeftButton) && mMoving)
{
this->move(this->pos() + (event->pos() - mLastMousePosition));
mLastMousePosition = event->pos();
}
}
void MyWidget::mouseReleaseEvent(QMouseEvent* event)
{
if(event->button() == Qt::LeftButton)
{
mMoving = false;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)