• 7120阅读
  • 11回复

Messagebox 焦点 [复制链接]

上一主题 下一主题
离线smallpoints
 

只看楼主 倒序阅读 楼主  发表于: 2009-12-25
请问怎么让子widget实现MessageBox那种一直靠前的效果?

并且父widget不能使用..
离线dbzhang800

只看该作者 1楼 发表于: 2009-12-25
这类窗体一般叫做 模态(Modal)对话框
离线smallpoints

只看该作者 2楼 发表于: 2009-12-25
我的意思是这样..子widget通过一个pushbutton 弹出来后..如果再次点击那个pushbutton 不会再弹出..直到子widget关闭..
离线smallpoints

只看该作者 3楼 发表于: 2009-12-25
void MainClass::Config()
{
    DialogClass *ConDialog = new DialogClass;

    if (!ConDialog->isActiveWindow())
    {      
        ConDialog->show();
    }
    else
    {
//    点击事件->ignore();
    qDebug() << "Message:" << "Dialog is Show";
    }
};
离线dbzhang800

只看该作者 4楼 发表于: 2009-12-25
void MainClass::Config()
{
    DialogClass *ConDialog = new DialogClass;

        ConDialog->exec();

};
离线benbenmajia

只看该作者 5楼 发表于: 2009-12-25
模态和非模态对话框
安然.....
离线smallpoints

只看该作者 6楼 发表于: 2009-12-25
ConDialog->exec();与ConDialog->show();有什么区别么?

还有QWidget的没有exec()这个成员哦.
离线smallpoints

只看该作者 7楼 发表于: 2009-12-25
引用第5楼benbenmajia于2009-12-25 14:11发表的  :
模态和非模态对话框


请问下这个怎么建立呢?我初学QT不懂
离线wato
只看该作者 8楼 发表于: 2009-12-25

还有QWidget的没有exec()这个成员哦.



你确定?

还真没有...那是窗体的特性
离线dbzhang800

只看该作者 9楼 发表于: 2009-12-25
引用第6楼smallpoints于2009-12-25 15:29发表的  :
ConDialog->exec();与ConDialog->show();有什么区别么?
还有QWidget的没有exec()这个成员哦.

1. 你应该用 QDialog 而不是 QWidget

2.好好看manual
  1. int QDialog::exec ()   [slot]
  2. Shows the dialog as a modal dialog, blocking until the user closes it. The function returns a DialogCode result.
  3. If the dialog is application modal, users cannot interact with any other window in the same application until they close the dialog. If the dialog is window modal, only interaction with the parent window is blocked while the dialog is open. By default, the dialog is application modal.
  4. See also open(), show(), result(), and setWindowModality().


3. 既然用的QWidget 有不愿换成 QDialog,那么,从上面最后一行的最后一个函数开始看起
离线smallpoints

只看该作者 10楼 发表于: 2009-12-25
setWindowModality(Qt::ApplicationModal);加一行这个就可以了..谢谢
离线guofu089
只看该作者 11楼 发表于: 2009-12-27
看一下QT帮助啊,在QWidget中有设置窗口的一个函数:
void setWindowFlags ( Qt::WindowFlags type );
type  设置为Qt::Dialog应该就可以了
快速回复
限100 字节
 
上一个 下一个