qt界面布局之设置无边框及拖动问题

1、正常情况下的界面是这样的,如图,这是有边框的:

2、但是我们想要设置成无边框的,就需要加上一行代码:

在 构造函数中加上:

 setWindowFlags(Qt::FramelessWindowHint);

发现界面会变成如下:无边框

3、无边框之后,界面就没办法拖动,以及放大缩小,全部都要由我们自己去设置了

下面是拖两个按钮在界面上,然后进行放大缩小的处理,在构造函数中进行绑定:

connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(close()));
    connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(showMinimized()));

4、需要重新写鼠标事件:

protected:
    void mouseReleaseEvent(QMouseEvent *event) override;
    void mousePressEvent(QMouseEvent *event) override;
    void mouseMoveEvent(QMouseEvent *event) override;

5、最后结果为如图:

完成,需要源码的可以参考: https://download.csdn.net/download/Littlehero_121/11975135

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中实现无边框放大缩小拖动界面可以使用以下方法: 1. 设置窗口无边框 使用setWindowFlags()函数设置窗口无边框,示例代码如下: ```python self.setWindowFlags(Qt.FramelessWindowHint) ``` 2. 实现窗口放大缩小 使用QDesktopWidget类获取屏幕的宽度和高度,然后通过setGeometry()函数设置窗口的大小,示例代码如下: ```python desktop = QApplication.desktop() width = desktop.width() height = desktop.height() self.setGeometry(0, 0, width, height) ``` 3. 实现窗口拖动 重载鼠标事件函数,实现窗口的拖动功能。在mousePressEvent()函数中记录鼠标按下时的位置,然后在mouseMoveEvent()函数中计算鼠标移动的距离,将窗口移动到相应的位置,示例代码如下: ```python def mousePressEvent(self, event): self.mouse_pos = event.globalPos() - self.pos() def mouseMoveEvent(self, event): self.move(event.globalPos() - self.mouse_pos) ``` 完整代码示例: ```python from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtCore import Qt class MainWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowFlags(Qt.FramelessWindowHint) self.setGeometry(0, 0, 800, 600) self.show() def mousePressEvent(self, event): self.mouse_pos = event.globalPos() - self.pos() def mouseMoveEvent(self, event): self.move(event.globalPos() - self.mouse_pos) if __name__ == '__main__': app = QApplication([]) window = MainWindow() app.exec_() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值