Qt 实现 Dismiss Dialog 对话框的一种方式

50 篇文章 4 订阅

我们经常会遇到这样的需求,鼠标点击某个按钮之后,会弹出来一个选择框。如果鼠标点击其他地方,这个选择框就会消失的需求,例如微信表情框:

Qt 实现方式不止一种,我们这里说一种最简单的方式。

1. 点击Mainwindows里的按钮,我们在鼠标点击的位置显示一个对话框(QWidget):

void MainWindow::on_pushButton_2_clicked()
{
    if (form == nullptr) {
        form = new Form(this);

    }

    QPoint pt = QCursor::pos();
    form->move(pt);

    form->show();
}

2. 在Form 类里面只需要做属性设置 Qt::Popup

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);
    setWindowFlags(Qt::Popup | Qt::FramelessWindowHint);

}

效果如下:

 

两个重点:

1. Mainwindow 里面,构造Form 时,parent 一定要指定this,

2. From 构造函数设置属性 Qt::Popup

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值