主窗口按钮的槽函数,点击调用
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显示出来即可。。