• 7247阅读
  • 8回复

关于子窗口和主窗口的信号传递问题 [复制链接]

上一主题 下一主题
离线紫霞风语
 
只看楼主 倒序阅读 楼主  发表于: 2009-11-09
各位大侠,我在mainwindow上点击添加按钮,弹出添加Dialog,然后点击添加Dialog上的确定pushbutton,将添加Dialog上的内容添加到mainwindow上的一个tableview上 应该怎么做啊?
离线xiangliuweb

只看该作者 1楼 发表于: 2009-11-09
用两个signal
离线午小夜

只看该作者 2楼 发表于: 2009-11-09
m_addDlg = NULL;

void mainwindow::addSlot()
{
    if(m_addDlg != NULL)
    {delete m_addDlg;m_addDlg = NULL;}
    m_addDlg = new AddDlg(this);    //declared as a member
    connect(addDlg->okButton,SIGNAL( clicked()),this,SLOT(acceptSlot()));  
}
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线goonman

只看该作者 3楼 发表于: 2009-11-10
请问楼主搞定了没有,我碰到和你相同的问题。
离线紫霞风语
只看该作者 4楼 发表于: 2009-11-10
搞定了,呵呵,主要是要完成类的传递,以我的程序为例:分别有DBTwinMainWindow和AddDBInfoDlg两个类 分别实现主窗口和添加窗口
在DBTwinMainWindow的.h文件中定义
private:
friend class AddDBInfoDlg;
在AddDBInfoDlg的头文件中:
class DBTwinMainWindow;

class AddDBInfoDlg : public QDialog
{
Q_OBJECT

public:
AddDBInfoDlg(QWidget *parent = 0,DBTwinMainWindow * main_window = 0);
~AddDBInfoDlg();

public:
DBTwinMainWindow * m_main_window;
}
在AddDBInfoDlg的.cpp文件的类构造函数中初始化:
#include "adddbinfodlg.h"
#include "dbtwinmainwindow.h"

AddDBInfoDlg::AddDBInfoDlg(QWidget *parent,DBTwinMainWindow * main_window)
    : QDialog(parent),m_main_window(main_window)

这样就可以使用m_main_window来访问和操作DBTwinMainWindow中的资源了。
离线tieqilin
只看该作者 5楼 发表于: 2009-11-10
m_main_window来访问和操作DBTwinMainWindow中的资源了
离线majiwei

只看该作者 6楼 发表于: 2009-11-25
必须保证connect的对象先创建,在连接
离线xiaomi123
只看该作者 7楼 发表于: 2009-11-25
引用第2楼午小夜于2009-11-09 23:02发表的  :
m_addDlg = NULL;
void mainwindow::addSlot()
{
    if(m_addDlg != NULL)
.......


你okButton设置为public?我在Qt creator中设计的界面,没处设置其字窗口的元素为public。这种情况怎么解决?
离线bkey

只看该作者 8楼 发表于: 2010-03-14
做个记号
快速回复
限100 字节
 
上一个 下一个