• 9510阅读
  • 4回复

【摘录】《KDE2/Qt编程金典》第四章:显示弹出式对话框——4.7 KDialogBase数据的另一种使用方法 [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2005-09-29
  下面的例子程序是经过修改前面而得到的,有时,让你的程序从对话框返回值可能更加方便,而不必将它们与slot和信号捆绑在一起.这种技巧只可以应用在一定的情况下,即直到关闭对话框时才需要返回对话框的数据.
  在前面的例子中,Apply按钮将数据提供给应用程序而不必关闭窗口.这个例子中去除了Apply按钮,删除了程序中所有的slot和信号(主程序中弹出对话框的除外).
  因为不能使用Apply按钮,所以必须把它删除掉.为此, 将modify.cpp程序中的第6行和第7行改变如下:
Modify::Modify(QWidget *parent, const char*name)
    : KDialogBase(parent, name, TRUE, "Modify", Ok | Cancel)
  下一步是删除掉manwidget.cpp中的第23行到第37行,使用下面的方法替换原来的内容:
void MainWidget::popupKdb()
{
    Modify *modify = new Modify(this, "modify");
    modify->exec();
    if (modify->result() == TRUE)
    {
        QString text = modify->getText();
        int height = modify->getHeight();
        int width = modify->getWidth();
        resize(width, height);
        label->setText(text);
    }
    delete modify;
}

  当对话框被关闭的时候,exec()方法将返回.如果使用OK按钮来关闭对话框,那么由result()返回的值是TRUE;否则,为FALSE.如果结果为TRUE,那么用户输入的数据就将从widget返回,并且在resize()和setText()调用中被用来修改窗口显示.因为exec()方法直到对话框关闭时才返回,所以,如果决定不关闭窗口进行按钮选择,那么除了slot,没有其它办法,--这就是为什么不能使用Apply按钮的原因.

QString Modify::getText()
{
    return(lineedit->text());
}

int Modify::getWidgth()
{
    return((width0>text()).toInt();
}

int Modify:;getHeight()
{
    return(height->text(), toInt());
}
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线jiupima
只看该作者 1楼 发表于: 2005-09-30
haha,很好,继续努力,老大还有多少啊?要坚持下去啊!
离线XChinux

只看该作者 2楼 发表于: 2005-10-06
很多的,方便的时候我会继续摘录的。你也可以下载英文版的电子书看
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线xiaobai
只看该作者 3楼 发表于: 2005-10-26
没找到英文版的呀,楼主继续呀
离线XChinux

只看该作者 4楼 发表于: 2005-10-26
Re:【摘录】《KDE2/Qt编程金典》第四章:显示弹出式对话框——4.7 KDialog
英文版在本站的FTP上有电子书。查看论坛公告栏版块置顶贴。
我会继续的,呵呵,不辜负大家的期望。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个