在QStackedWidget页面之间共享变量
问题描述:
我有3页的StackedWidget,每页都包含3个lineEdit,现在在我每次通过的页面上,我都想将这3个lineEdit的内容保存到一个变量中,以便稍后处理它。 我有这样一段代码:在QStackedWidget页面之间共享变量
connect(ui->stackedWidget, SIGNAL(currentChanged(int)), this, SLOT(getInputs(int)));
和插槽:
void ConfSetup::getInputs(int index)
{
QString para;
switch(index)
{
case 1:
ui->backButton0->setEnabled(false);
break;
case 2:
inputs << ui->serverEdit->text();
inputs << ui->portEdit->text();
break;
case 3:
inputs << ui->userDbEdit->text();
inputs << ui->passwordDbEdit->text();
break;
case 6:
foreach(para, inputs)
ui->comboBox->addItem(para);
//ui->lineEdit->setText(QString::number(para.length()));
break;
default:
ui->backButton0->setEnabled(true);
break;
}
}
的comboBox
插件现在应该包含4个值,而是那么它包含一个空白文本,也para.length()
在lineEdit
返回0小部件。
答
一个朋友告诉我,我尽显inputs
变量的时候,我改变了索引页,巫婆当然意味着lineEdit
构件是在那个时候是空的。该解决方案很简单,第一,我避免getInputs(int)
插槽,替换我有这样的:
ui->comboBox->addItem(ui->serverEdit->text());
ui->comboBox->addItem(ui->portEdit->text());
ui->comboBox->addItem(ui->userDbEdit->text());
// ... etc
答
为什么不在你的主窗口中使用成员变量?只需在头文件中声明它们并在你的cpp中初始化即可。
// your header file
QString m_server_str;
QString m_port_str;
QString m_userdb_str;
QString m_passworddb_str;
和交换你的QStackedWidget的页面,当你阅读的编辑的内容,并将它们保存到您的成员变量。只要使用他们相同的信号,你已经这样做了:QStackedWidget::currentChanged (int index)
你能解释一下错误的'QStringList中inputs',因为对我来说看起来有些设置许多成员。我刚刚尝试了你的建议,并得到了一些结果(空白文本)。 – SIFE 2011-05-09 12:49:01
请记住* index *是您更改为新页面的编号。也许你拿错了页面,需要先存储当前页面的索引。 – Exa 2011-05-09 18:23:23
我确定我没有选错页面。 – SIFE 2011-05-09 23:47:34