2025年QProgressDialog 你可能想了解的一些内容

QProgressDialog 你可能想了解的一些内容关于模态设置 QProgressDia 可以设置模态 需要在 new 的时候传入 parent QProgressBar 设置不好 只有 dialog 可以设置模态 widget 不能设置模态 QProgressBar 继承自 widget 关于位置设置

大家好,我是讯享网,很高兴认识大家。

关于模态设置

关于位置设置

子窗口要相对于父窗口设置合适的位置,父窗口在屏幕上移动,子窗口对应跟着改变大小与位置:
1 先设置子窗口的width与height,可以按父窗口的比例来;
2 然后以父窗口的左上角为原点计算子窗口的位置QPoint;
3 将2中的位置使用父窗口的mapToGlobal换算到屏幕的位置;
4 将3中得到的位置设置给子窗口;
如果子窗口设置成无边框的,则子窗口位置设置自动转换成相对于父窗口的位置,此时不再需要转换屏幕坐标设置;

关于无边框,无取消按钮

setCancelButton(0);//隐藏取消按钮
setWindowFlags(Qt::FramelessWindowHint);//无边框
setStyleSheet(“QWidget{background-color: rgb(255,255,255);}”);//背景板是白色


讯享网

关于进度条样式

取消显示百分比,QProgressBar的setTextVisiable可以设置;
但是QProgressDialog没有setTextVisiable怎么办?
这时new一个QProgressBar(该QProgressDialog可构造设置为其parent,方便管理),
然后QProgressDialog调用setBar即可;
progressBar再设置setTextVisiable(false)即可。
进度条还可以设置QSS样式;

进度条大小控制

示例代码

 在使用它的对话框构造函数中new一个对象 //无边框 //progress_dialog_(new QProgressDialog(this, (Qt::Window | Qt::FramelessWindowHint))) //只有右上角叉叉按钮 progress_dialog_(new QProgressDialog(this, (Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint))) //用法: progress_dialog_->setMinimumSize(300, 120); //设置进度对话框采用模态方式进行,即显示进度的同时,其他窗口将不响应输入信号 progress_dialog_->setWindowModality(Qt::WindowModal); //如果进度条运行的时间小于5,进度条就不会显示,默认是4S progress_dialog_->setMinimumDuration(10); //设置进度对话框的窗体标题 progress_dialog_->setWindowTitle(tr("Please Wait")); //设置进度对话框的显示文字信息 progress_dialog_->setLabelText(tr("tips: request game list.")); //设置进度对话框的“取消”按钮的显示文字 //progress_dialog_->setCancelButtonText(tr("Cancel")); progress_dialog_->setCancelButton(0);//不显示取消按钮 //设置进度对话框的步进范围 progress_dialog_->setRange(0, 100); progress_dialog_->setAutoClose(true); //为了隐藏QProgressDialog进度条上的进度文字 QProgressBar * prog = new QProgressBar(progress_dialog_); prog->setTextVisible(false); progress_dialog_->setBar(prog); //可以启用一个定时器看效果 static int steps = 0; QTimer *tm = new QTimer(this); connect(tm, &QTimer::timeout, [=]() { 
    steps++; progress_dialog_->setValue(steps); if (steps > progress_dialog_->maximum() || progress_dialog_->wasCanceled()) { 
    tm->stop(); steps = 0; progress_dialog_->cancel(); //delete progress_dialog_; } }); tm->start(50); 

讯享网
小讯
上一篇 2025-01-09 17:16
下一篇 2025-02-18 08:48

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/38259.html