Qt如何从另一个窗口中获取数据

abcrunning 2010-12-31 06:34:21
Hi,
一个qt新人,问下当前窗口如何从一个Dialog中获取数据,知道的请回答下,谢谢。
我试了
MyDefineDialog dialog;
if(dialog.exec() == QDialog::Accepted){
// do something to handle the data
dialog.getData()? // 这个貌似不行
}
...全文
1754 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
p89787259 2011-01-04
  • 打赏
  • 举报
回复
直接关联成员变量最简单了
linux 2011-01-03
  • 打赏
  • 举报
回复
看百度http://hi.baidu.com/lhj_dekongjian/blog/item/f1bc8eaabbc0d6a1ca130c6b.html
aoxuehan0424 2011-01-03
  • 打赏
  • 举报
回复
按照帮助文档说,只有close对话框的时候才会进入if语句,那怎么我在getString中添加的打印语句没有输出呢?

不是在 close对话框的时候才会进入if语句

你试试在dialog里面设置一个按钮,按钮单击事件代码:
{
accept();
}
这样就可以进入那个if了。而且if里面的getData()也可以用~
wangxuefan1220 2011-01-03
  • 打赏
  • 举报
回复
可以把另外一个窗口隐藏,然后读取另外一个窗口的成员变量
  • 打赏
  • 举报
回复
上面的效果不是很好,再弄个如果设置对话框按钮看看:
(对话框构造函数)
Dialog::Dialog(QWidget *parent) :
QDialog(parent)
{
b=new QPushButton("OK",this);
b->setGeometry(10,10,33,23);
b->setDefault(true);
connect(b,SIGNAL(clicked()),this,SLOT(accept()));
//单击b按钮时对话框码为1,并隐藏对话框
c=new QPushButton("Cancel",this);
c->setGeometry(10,50,33,23);
connect(c,SIGNAL(clicked()),this,SLOT(reject()));
//单击C按钮时对话框返回码为0并隐藏对话框
}
  • 打赏
  • 举报
回复
对话框的exec.()返回值是一个DialogCode枚举:
QDialog::Accepted=1 1
QDialog::Rejected=0
只有在返回值是Accepted的时候才会进入if语句
在按下对话框上的某个按钮时,可以指定DialogCode:
void on_button1_clicked()//某个按钮按下的槽函数
{
setResult (QDialog::Accepted);//设置对话框结果为Accepted
...
}
这样,在exec()执行完毕就会返回Accepted(1),才会执行到if语句
dyw 2010-12-31
  • 打赏
  • 举报
回复
也可以利用Signal/Slot机制来实现
abcrunning 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangglemu 的回复:]
class MyDefineDialog : public QDialog
{
private:
QString str;//给对话框增加一个需要的变量
public:
QString getString(){return str;}
....
};

调用:
MyDefineDialog dialog;
if(dialog.exec() == QDialog::……
[/Quote]

按照帮助文档说,只有close对话框的时候才会进入if语句,那怎么我在getString中添加的打印语句没有输出呢?
  • 打赏
  • 举报
回复
class MyDefineDialog : public QDialog
{
private:
QString str;//给对话框增加一个需要的变量
public:
QString getString(){return str;}
....
};

调用:
MyDefineDialog dialog;
if(dialog.exec() == QDialog::Accepted){
qDebug()<<dialog.getString()<<endl;
}

16,212

社区成员

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

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