添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 创建一个QMainWindow或QWidget。
  • 设置窗口样式为无边框:setWindowFlags(Qt::FramelessWindowHint)。
  • 在窗口顶部绘制一个自定义的标题栏,可以使用QHBoxLayout和QPushButton等布局管理器和控件进行设计。
  • 实现鼠标拖动功能,在标题栏上重载mousePressEvent、mouseMoveEvent和mouseReleaseEvent函数。
  • 其中关键是第3步,下面是代码示例:

    // 自定义标题栏
    void MainWindow::createTitleBar()
        QWidget* titleBar = new QWidget(this);
        QHBoxLayout* layout = new QHBoxLayout(titleBar);
        QPushButton* closeButton = new QPushButton("Close", titleBar);
        connect(closeButton, &QPushButton::clicked, this, &MainWindow::close);
        // 添加其他控件
        layout->addWidget(closeButton);
        titleBar->setLayout(layout);
        titleBar->setFixedHeight(30); // 标题栏高度
    // 鼠标按下事件,记录鼠标位置
    void MainWindow::mousePressEvent(QMouseEvent *event)
        if (event->button() == Qt::LeftButton) {
            isMousePressed = true;
            mousePosition = event->globalPos() - frameGeometry().topLeft();
            event->accept();
    // 鼠标移动事件,拖动窗口
    void MainWindow::mouseMoveEvent(QMouseEvent *event)
       if (isMousePressed && (event->buttons() && Qt::LeftButton)) {
           move(event->globalPos() - mousePosition);
           event->accept();
    // 鼠标释放事件,停止拖动
    void MainWindow::mouseReleaseEvent(QMouseEvent *event)
        if (event->button() == Qt::LeftButton) {
            isMousePressed = false;
            event->accept();
    

    在以上代码中,createTitleBar函数用于创建自定义标题栏,在其中添加了一个关闭按钮和其他控件。setFixedHeight函数用于设置标题栏的高度。

    而mousePressEvent、mouseMoveEvent和mouseReleaseEvent函数则是实现鼠标拖动窗口的功能。其中,isMousePressed记录鼠标是否按下,mousePosition保存鼠标位置,在move函数中实现移动窗口的效果。

    本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=3519