在QStackedWidget页面之间共享变量

时间:2011-05-09 00:47:14

标签: qt combobox qt4

我有StackedWidget有3个页面,每个页面包含3个lineEdit,现在在我传递的每个页面上,我想将这个3 lineEdit的内容保存到变量中,以便以后能够处理它。 我有这段代码:

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。

2 个答案:

答案 0 :(得分:0)

为什么不在主窗口中使用成员变量?只需在头文件中声明它们并在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 )

答案 1 :(得分:0)

一位朋友告诉我,当我更改索引页面时,我正在填充inputs变量,当然,lineEdit小部件当时是空的。解决方案非常简单,首先,我避免使用getInputs(int )槽,而在替代方案中我做到了这一点:

ui->comboBox->addItem(ui->serverEdit->text());
ui->comboBox->addItem(ui->portEdit->text());
ui->comboBox->addItem(ui->userDbEdit->text());
// ... etc