可拖动的无标题栏窗体,并且可以通过拉拽改变窗体大小。

博客介绍了去除Form标题栏的设置,需将form的controlbox属性设为false,form.text设为空。还给出了鼠标操作的代码,包括鼠标按下、移动和抬起时的处理逻辑,可实现窗体的拖动等操作。

  

注意:要设置formcontrolbox属性为false

特别注意: form.text要设置为空,否则不会把标题栏去掉

Dim MousX As Integer

Dim MousY As Integer

Dim CurrX As Integer

Dim CurrY As Integer

 

 Public Sub myMouseDown(ByVal sender As Object, ByVal ex As MouseEventArgs) Handles MyBase.MouseDown

        If ex.Button = MouseButtons.Left Then

            '如果是鼠标左键,则不捕获鼠标

            Me.Capture() = False

 

            '获得鼠标坐标(相对于窗体)

            MousX = ex.X

            MousY = ex.Y

        End If

    End Sub

 

    Public Sub myMouseMove(ByVal sender As Object, ByVal ex As MouseEventArgs) Handles MyBase.MouseMove

        If ex.Button = MouseButtons.Left Then

            '左键操作

            CurrX = Me.Left - MousX + ex.X

            CurrY = Me.Top - MousY + ex.Y

            '设置窗体相对于屏幕的坐标

            Me.SetDesktopLocation(CurrX, CurrY)

        End If

    End Sub

    '

    Public Sub myMouseUp(ByVal sender As Object, ByVal ex As MouseEventArgs) Handles MyBase.MouseUp

        If ex.Button = MouseButtons.Left Then

            Me.Capture() = True

           

        End If

    End Sub

在Qt框架中,如果你想要让你的QWidget组件可以被用户通过鼠标操作来拉拽改变大小,你需要使用Qt提供的布局管理器(如QVBoxLayout、QHBoxLayout、QGridLayout等)来组织你的界面元素,并设置相应的属性来使得窗口可以被拉拽。对于顶层窗口,如QMainWindow或QDialog,这些通常已经支持自由拉拽大小。 如果你使用的是QMainWindow或者其他不自动支持自由调整大小的QWidget,并且想要手动实现这个功能,你可以通过重写QWidget的事件处理器来实现。具体来说,你需要重写`mousePressEvent`、`mouseMoveEvent`和`mouseReleaseEvent`三个事件处理器来实现拖拽效果,同时设置窗口的`resizeEnabled`属性为`true`以允许用户调整大小。 以下是一个简单的示例代码,展示了如何设置一个自定义的QWidget以使其可调整大小: ```cpp #include <QWidget> #include <QMouseEvent> class ResizableWidget : public QWidget { Q_OBJECT public: ResizableWidget(QWidget *parent = nullptr) : QWidget(parent) { // 设置窗口的初始大小和最小大小 setFixedSize(300, 200); setMinimumSize(100, 100); } protected: // 重写鼠标事件处理函数 void mousePressEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton) { dragPosition = event->globalPos() - frameGeometry().topLeft(); event->accept(); } QWidget::mousePressEvent(event); } void mouseMoveEvent(QMouseEvent *event) override { if (event->buttons() & Qt::LeftButton) { move(event->globalPos() - dragPosition); event->accept(); } QWidget::mouseMoveEvent(event); } void mouseReleaseEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton) { event->accept(); } QWidget::mouseReleaseEvent(event); } private: QPoint dragPosition; }; #include "main.moc" ``` 在这个例子中,`ResizableWidget`类通过捕获鼠标事件来改变窗口的位置,从而达到可以拖拽的效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值