switch case 结构会改变提示框大小?

微雨流光 2013-06-17 04:27:58
如题。

一个函数中用了switch case 结构,根据传进来的值设定QMessageBox的标题和内容。

发现该QMessageBox的大小被限定在(143, 85),在代码里设置setFixedSize都没用...

求助~~~
...全文
168 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdwx 2013-06-17
  • 打赏
  • 举报
回复
自己设计一个对话框吧,也不复杂,可以是任何的样子。
微雨流光 2013-06-17
  • 打赏
  • 举报
回复
我的意思是这样写 对话框的大小不是固定成(143, 85) 而是根据WindowTitle 和 Text长度展现的。 不会出现看不见全部信息的情况。
xcyl 2013-06-17
  • 打赏
  • 举报
回复
引用 8 楼 cerci0304 的回复:
[quote=引用 7 楼 cai6811376 的回复:] 你不加switch就能改变大小了么?
直接这样写就没问题

QMessageBox infoMsgBox;
    infoMsgBox.setWindowTitle(QObject::tr("point out"));
    infoMsgBox.setText(QObject::tr("please choose the current resource,then operate it!"));
    infoMsgBox.setStandardButtons(QMessageBox::Ok );
    infoMsgBox.exec();
[/quote] 用你这些语句试了下,不能改变大小
微雨流光 2013-06-17
  • 打赏
  • 举报
回复
引用 7 楼 cai6811376 的回复:
你不加switch就能改变大小了么?
直接这样写就没问题

QMessageBox infoMsgBox;
    infoMsgBox.setWindowTitle(QObject::tr("point out"));
    infoMsgBox.setText(QObject::tr("please choose the current resource,then operate it!"));
    infoMsgBox.setStandardButtons(QMessageBox::Ok );
    infoMsgBox.exec();
xcyl 2013-06-17
  • 打赏
  • 举报
回复
你不加switch就能改变大小了么?
微雨流光 2013-06-17
  • 打赏
  • 举报
回复

QMessageBoxinfoMsgBox;
    switch (ret) {
        case UBP_SUCCESS:
            break;
        case ERR_UBP_DC_SDK_PARALLEL_CONFLICT:
            infoMsgBox.setWindowTitle(QObject::tr("business confilict"));
            infoMsgBox.setText(QObject::tr("the current user or canmera has the similar business!"));
            break;
        case ERR_UBP_DC_SDK_STATE_MISMATCH:
            infoMsgBox.setWindowTitle(QObject::tr("invalid state"));
            infoMsgBox.setText(QObject::tr("opration is not accepted,because the current state of the corresponding resources cann't do this opreration"));
            break;

        default:
            //infoMsgBox.setWindowTitle(QString::number(ret));
            break;
    }

    if(ret != UBP_SUCCESS){
        infoMsgBox.setStandardButtons(QMessageBox::Ok );
        infoMsgBox.exec();
    }
xcyl 2013-06-17
  • 打赏
  • 举报
回复
引用 4 楼 cerci0304 的回复:
去掉switch case,只处理一种情况时没这个问题,所以很奇怪。。。
你把这段代码贴出来看看
微雨流光 2013-06-17
  • 打赏
  • 举报
回复
引用 3 楼 cai6811376 的回复:
[quote=引用 2 楼 cerci0304 的回复:] [quote=引用 1 楼 cai6811376 的回复:] QMessageBox::showEvent() 强制将其大小改变成了QT认为比较合适的大小 你要改变大小的话继承QMessageBox重新实现showEvent,在showEvent里面setFixedSize
我试试。 另外好奇为啥在switch case结构下会导致强制修改其合适大小?[/quote] 这个不是switch强制的,应该是根据你要显示的内容自动强制显示的[/quote] 去掉switch case,只处理一种情况时没这个问题,所以很奇怪。。。
xcyl 2013-06-17
  • 打赏
  • 举报
回复
引用 2 楼 cerci0304 的回复:
[quote=引用 1 楼 cai6811376 的回复:] QMessageBox::showEvent() 强制将其大小改变成了QT认为比较合适的大小 你要改变大小的话继承QMessageBox重新实现showEvent,在showEvent里面setFixedSize
我试试。 另外好奇为啥在switch case结构下会导致强制修改其合适大小?[/quote] 这个不是switch强制的,应该是根据你要显示的内容自动强制显示的
微雨流光 2013-06-17
  • 打赏
  • 举报
回复
引用 1 楼 cai6811376 的回复:
QMessageBox::showEvent() 强制将其大小改变成了QT认为比较合适的大小 你要改变大小的话继承QMessageBox重新实现showEvent,在showEvent里面setFixedSize
我试试。 另外好奇为啥在switch case结构下会导致强制修改其合适大小?
xcyl 2013-06-17
  • 打赏
  • 举报
回复
QMessageBox::showEvent() 强制将其大小改变成了QT认为比较合适的大小 你要改变大小的话继承QMessageBox重新实现showEvent,在showEvent里面setFixedSize

16,173

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧