• 5678阅读
  • 13回复

[提问]怎么自动单击消息提示框的OK按钮 [复制链接]

上一主题 下一主题
离线wangyan23888
 

只看楼主 倒序阅读 楼主  发表于: 2013-02-18
QMessageBox::warning(this,tr("error"),.......);
这是和消息提示框,出来一个OK按钮,有没有办法让它自动就会点击OK按钮的,不需要人为去点击的。
不可以没有这个提示框的哦。
离线hitler++

只看该作者 1楼 发表于: 2013-02-18
你应该是想让他弹出之后如果超过几秒内没被点击,就自动关闭吧
离线wangyan23888

只看该作者 2楼 发表于: 2013-02-18
回 1楼(hitler++) 的帖子
是的,就是自动关闭,有办法吗?
离线roywillow

只看该作者 3楼 发表于: 2013-02-18
回 2楼(wangyan23888) 的帖子
试试继承QMessageBox,不用它的静态函数来调用,而是实例化这个类然后手动执行
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 4楼 发表于: 2013-02-18
自己做个对话框不是更好。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线wangyan23888

只看该作者 5楼 发表于: 2013-02-18
回 4楼(jdwx) 的帖子
自己做个对话框是更好的,主要我是参考网上的程序的
这样是可以的,但是不知道怎么自动关闭
QMessageBox::warning(this,tr("error"),ftpClient->errorString());

换成以下这样结果却不行了,这样可以做个定时器超过几秒种关闭对话框的
        QMessageBox *box = new QMessageBox;
        box->setWindowTitle(tr("error"));
        box->setIcon(QMessageBox::Warning);
        box->setText(ftpClient->errorString());
        QPushButton *yesBtn = box->addButton(tr("OK"), QMessageBox::YesRole);
        box->show();

不知道第一种怎么自动关闭,谢谢
离线wangyan23888

只看该作者 6楼 发表于: 2013-02-18
回 楼主(wangyan23888) 的帖子
向大侠求助
离线hitler++

只看该作者 7楼 发表于: 2013-02-18
能行,添加个qtimer ,让他x秒之后发送个信号,在slot里面给那个messagebox指针发送close信号
离线hitler++

只看该作者 8楼 发表于: 2013-02-18
QMessageBox::warning

这样直接静态调用没办法那样用
不过也有办法
比如在windows下的话可以调用findwindow api ,得到这个hwnd之后sendmessage 关闭他
离线wangyan23888

只看该作者 9楼 发表于: 2013-02-19
回 8楼(hitler++) 的帖子
你好,是在windows下的,用findwindow api ,能不能说的详细点,谢谢
离线hehui

只看该作者 10楼 发表于: 2013-02-19
xxx->accept()?
xxx->click()?
离线wangyan23888

只看该作者 11楼 发表于: 2013-02-19
回 10楼(hehui) 的帖子
你好,谢谢,请问能说的详细点吗
离线kaon

只看该作者 12楼 发表于: 2013-02-19
自己写一个类比如MessageBox,继承于QMessageBox
在showEvent 里加入startTimer(1000); 在timerEvent里加入this->close();
离线hehui

只看该作者 13楼 发表于: 2013-02-21
回 11楼(wangyan23888) 的帖子
1.继承QMessageBox或QWidget/QDialog

  QWidget有close()方法, QDialog还有个 accept(),都可以用来关闭窗口显示。窗体上有按钮的话可在其clicked()时调用窗体的close()方法。


2.简单示例,注意在构造函数中初始化
 QMessageBox *msgBox;
    msgBox = new QMessageBox(this);
    msgBox->setIcon(QMessageBox::Warning);
    msgBox->setModal(true);
    msgBox->setText("Warning!");
    msgBox->show();

    QTimer::singleShot(5000, msgBox, SLOT(accept()));




快速回复
限100 字节
 
上一个 下一个