当前位置: 代码迷 >> QT开发 >> qt 点击按钮调用另一个窗口后,新窗口旋钮自定义槽函数不执行,
  详细解决方案

qt 点击按钮调用另一个窗口后,新窗口旋钮自定义槽函数不执行,

热度:140   发布时间:2016-04-25 03:10:49.0
qt 点击按钮调用另一个窗口后,新窗口按钮自定义槽函数不执行,...
主窗口按钮的槽函数,点击调用
void Ui_initface::set_clicked()
{
Ui_Dialog udialog;
udialog.setupUi(dialog);
dialog->show();
}
新窗口的槽函数
void Ui_Dialog::save_conf()
{
char s_c[11];
int s_i[8];
memset(s_i,0,8);
QString pstr;
s_i[0]=spinBox0->value();
printf("%d\n",s_i[0]);

s_i[1]=spinBox0_2->value();

pstr=lineEdit_ag->text();
const char *c_pstr = pstr.toLatin1().data();
//printf("%s\n",c_pstr);
strcpy(s_c,c_pstr);
s_i[4]=radioButton_ag1->isChecked();

s_i[5]=radioButton_ag01->isChecked();
s_i[2]=radioButton_a1->isChecked ();
s_i[3]=radioButton_01->isChecked ();

s_i[6]=radioButton_ab1->isChecked ();
s_i[7]=radioButton_ab01->isChecked ();
printf("%d\n",s_i[1]);
printf("%d\n",s_i[2]);
printf("%d\n",s_i[3]);
printf("%d\n",s_i[4]);
printf("%d\n",s_i[5]);
printf("%d\n",s_i[6]);
printf("%d\n",s_i[7]);

Write_Config(s_i,s_c);
emit CloseDialog();

}


点击设置弹出第二个对话框,点击第二个对话框的保存没有反应,没有报错。
单独运行第二个图形界面都很正常。
        QObject::connect(pushButton_an, SIGNAL(clicked()), Dialog, SLOT(close()));
        //连接按钮和槽,如果单独写一个主函数,这个窗口就都正常。
        QObject::connect(pushButton_ay, SIGNAL(clicked()), this, SLOT(save_conf()));
        QObject::connect(this, SIGNAL(CloseDialog()), Dialog, SLOT(close()));
        两个窗口是分开写的,单独实验都正常。
        连接的时候用点击设置按钮,执行槽函数,
        void Ui_initface::set_clicked()
       {
       Ui_Dialog udialog;
       udialog.setupUi(dialog);
       dialog->show();
       }
       显示设置窗口,其中保存按钮的槽函数点击不执行。
      代码是由desinger生成的一部分,我添加了一部分。
     下面这段不懂,但是不保留就报错。
     QT_BEGIN_NAMESPACE
     //这部分为成员函数
     namespace Ui {
    class Dialog: public Ui_Dialog {};
     } // namespace Ui

QT_END_NAMESPACE 
求解答。。。。。。。 

------解决思路----------------------
what!!!

Ui_Dialog udialog;
udialog.setupUi(dialog);

你居然用栈里面的空间来开一个对话框,这样不出错才是怪事呢。
------解决思路----------------------
用父子关系吧,打开子窗口时父窗口可以隐藏,直接在子窗口的源文件操作子窗口

dexv = new Systemsettings(this); //设置界面对象为子界面

dexv->show();//打开子界面
this->hide();//隐藏父界面
------解决思路----------------------
程序启动时,你将这两个dialog都实例化,只不过只显示第一个dialog,第二个dialog隐藏,当点击设置时,再将第二个dialog显示出来即可。。
  相关解决方案