• 11783阅读
  • 14回复

请问我在designer 里面的OKbutton 我的信号是clicked槽是accept,为什么运行后点它是关闭对话框的呢 [复制链接]

上一主题 下一主题
离线xiaopeng14
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-22
RT
新手
请高手赐教
[ 此帖被xiaopeng14在2009-08-22 15:42重新编辑 ]
离线rqzrqh

只看该作者 1楼 发表于: 2009-08-22
信号是clicked()
离线xiaopeng14
只看该作者 2楼 发表于: 2009-08-22
恩 我知道 我表达不好 是槽是accept
运行的时候点它会关闭对话框
离线yangfanxing
只看该作者 3楼 发表于: 2009-08-22
Re:请问我在designer 里面的OKbutton 我的信号是accept,为什么运行后点它是关闭对话框的呢
在信号/槽编译模式下看看是否有红色连接符让OK链接了Close()或其他的&
PHPWind好恶心。。。不想看这种界面。。。
离线dbzhang800

只看该作者 4楼 发表于: 2009-08-22
你能先描述你一下你打算做什么吗,或者你期待这个槽产生什么效果?


另外:这个槽本身就是关闭对话

void QDialog::accept ()   [virtual slot]

Hides the modal dialog and sets the result code to Accepted.

See also reject() and done().
离线真水无香
只看该作者 5楼 发表于: 2009-08-22
引用第4楼dbzhang800于2009-08-22 15:46发表的  :
你能先描述你一下你打算做什么吗,或者你期待这个槽产生什么效果?
另外:这个槽本身就是关闭对话
.......


是啊
不太明白楼主问什么?
离线zhenzhenniun
只看该作者 6楼 发表于: 2009-10-12
大概是想保存对话框......我也想保存对话框呢,怎么弄哈?没有现成的插槽么?
自己定义的话该怎么定义?高手指点下
离线zhenzhenniun
只看该作者 7楼 发表于: 2009-10-12
来人解答下来
离线zhenzhenniun
只看该作者 8楼 发表于: 2009-10-12
好冷清......
离线foxyz

只看该作者 9楼 发表于: 2009-10-12
accept本身就是hide这个dialog的。你如果要自己处理,可以自己重载这个slot函数:
void myDialog::accept()
{
    .......
    QDialog::accept();
}
离线zhenzhenniun
只看该作者 10楼 发表于: 2009-10-12
引用第9楼foxyz于2009-10-12 13:57发表的  :
accept本身就是hide这个dialog的。你如果要自己处理,可以自己重载这个slot函数:
void myDialog::accept()
{
    .......
    QDialog::accept();
.......

      

对对,我也觉得该自己重载,可是具体怎么定义呢,哪位高人给个实例啊?
离线foxyz

只看该作者 11楼 发表于: 2009-10-13
重载不是很简单的!

你做ui肯定有自己的类阿!
class mydialog : public: QDialog
{
        ......
      public slots:
      void accept();
       .....
private:
    Ui::MyDesignedDialog* ui;
}
离线zhenzhenniun
只看该作者 12楼 发表于: 2009-10-13
不是这意思,是插槽accept ()是点击退出,现在想用它保存完本dialog之后再退出,需要在accept里面定义一下,或者不用accept 而新建一个save(),问题是save()插槽该怎么定义下,否则cilick 和save 之间将是空连接,点击无效
离线foxyz

只看该作者 13楼 发表于: 2009-10-13
引用第12楼zhenzhenniun于2009-10-13 13:55发表的  :
不是这意思,是插槽accept ()是点击退出,现在想用它保存完本dialog之后再退出,需要在accept里面定义一下,或者不用accept 而新建一个save(),问题是save()插槽该怎么定义下,否则cilick 和save 之间将是空连接,点击无效


这个问题更简单了,你的accept关闭了dialog,但是这个dialog的对象实例仍然存在阿!我估计你就是想在关闭以后还能获得dialog内部某些控件的值。

我举个例子吧!如果你的dialog是一些lineEdit, 类似一些property setting,打开这个dialog后,你修改了这些lineEdit的值,然后你想关闭后获得这些值。
code大概是这样的:

QString oldValue1="OldValue1";
QDialog myDialog;
Ui::myDesignedDialog dialogData;
dialogData.setupUi(&myDialog);
dialogData.lineEdit1->setText(oldValue1);
myDialog.show();
QString value1 = dialogData.lineEdit1->text();
......
上边是最简单的情况下.
稍微复杂点的,你需要自己写个class,并且重载accept slot
在你的accept里,不调用QDialog::accept().
然后在你的dialog类里的构造函数把调用者的指针传进来,保存起来(子类不能销毁)。
这样,你可以在构造函数里通过这个指针访问调用者,同时保存结果给调用者。
离线XChinux

只看该作者 14楼 发表于: 2013-11-19
accept()就是设置内部result值 后要close()掉对话框的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个