访问槽外的变量。在插槽之间传递变量。在QT中连接字符串变量
access variables outside of slot. pass variables between slots. concatenate string variables in QT
Qt 新手。你能帮我理解如何连接来自两个不同行编辑的两个 QString 吗?
我有一个带有两行编辑的图形用户界面。前缀文本和数字文本。我想将前缀和数字值组合成一个字符串。
//connect the line edit slots to signals
QObject::connect(ui->prefixLineEdit, SIGNAL(textChanged(QString)),
this, SLOT(prefixChanged()));
QObject::connect(ui->startNumberLineEdit, SIGNAL(textChanged(QString)),
this, SLOT(startNumChanged()));
//functions to run when line edit is changed
void MainWindow::prefixChanged(){
QString prefixText = ui->prefixLineEdit->text();
}
void MainWindow::startNumChanged(){
QString startNumberText = ui->startNumberLineEdit->text();
//combine prefix and start number??
QString combined = (prefixText + startNumberText);
ui->statusbar->showMessage(combined);
}
我想一般的问题是如何在槽之间共享变量?我已经阅读了有关 QSignalMapper 的信息,可能会制作一个代理槽来传递参数,并查看了 QString 的 .args() 函数。但这一切现在都超出了我的范围。
我是否必须将这些变量设置为 public 才能从槽函数中访问它们?我认为这有点不受欢迎?
如有任何建议,我们将不胜感激。
您可以这样做,只需在您需要的地方访问 ui
:
void MainWindow::startNumChanged(){
QString startNumberText = ui->startNumberLineEdit->text();
QString prefixText = ui->prefixLineEdit->text();
//combine prefix and start number
QString combined = prefixText + startNumberText;
ui->statusbar->showMessage(combined);
}
您可以将此代码移动到某个函数中,并在需要时从每个槽中调用它。
在更复杂的情况下,您需要 header 中 class 的私有变量:
QString startNumberText;
QString prefixText;
(代表OP发表).
根据demonplus的回答,我制作了这个函数:
void MainWindow::combineOutputName(){
QString prefixText = ui->prefixLineEdit->text();
int incrementValue = ui->incrementSpinBox->value();
QString startNumberValue = ui->startNumberLineEdit->text();
int newValue = startNumberValue.toInt() + incrementValue;
ui->exampleLabel->setText(QString::number(newValue));
}
这完成了将来自不同 UI 元素的输入集中到一个变量中。
Qt 新手。你能帮我理解如何连接来自两个不同行编辑的两个 QString 吗?
我有一个带有两行编辑的图形用户界面。前缀文本和数字文本。我想将前缀和数字值组合成一个字符串。
//connect the line edit slots to signals
QObject::connect(ui->prefixLineEdit, SIGNAL(textChanged(QString)),
this, SLOT(prefixChanged()));
QObject::connect(ui->startNumberLineEdit, SIGNAL(textChanged(QString)),
this, SLOT(startNumChanged()));
//functions to run when line edit is changed
void MainWindow::prefixChanged(){
QString prefixText = ui->prefixLineEdit->text();
}
void MainWindow::startNumChanged(){
QString startNumberText = ui->startNumberLineEdit->text();
//combine prefix and start number??
QString combined = (prefixText + startNumberText);
ui->statusbar->showMessage(combined);
}
我想一般的问题是如何在槽之间共享变量?我已经阅读了有关 QSignalMapper 的信息,可能会制作一个代理槽来传递参数,并查看了 QString 的 .args() 函数。但这一切现在都超出了我的范围。
我是否必须将这些变量设置为 public 才能从槽函数中访问它们?我认为这有点不受欢迎?
如有任何建议,我们将不胜感激。
您可以这样做,只需在您需要的地方访问 ui
:
void MainWindow::startNumChanged(){
QString startNumberText = ui->startNumberLineEdit->text();
QString prefixText = ui->prefixLineEdit->text();
//combine prefix and start number
QString combined = prefixText + startNumberText;
ui->statusbar->showMessage(combined);
}
您可以将此代码移动到某个函数中,并在需要时从每个槽中调用它。
在更复杂的情况下,您需要 header 中 class 的私有变量:
QString startNumberText;
QString prefixText;
(代表OP发表).
根据demonplus的回答,我制作了这个函数:
void MainWindow::combineOutputName(){
QString prefixText = ui->prefixLineEdit->text();
int incrementValue = ui->incrementSpinBox->value();
QString startNumberValue = ui->startNumberLineEdit->text();
int newValue = startNumberValue.toInt() + incrementValue;
ui->exampleLabel->setText(QString::number(newValue));
}
这完成了将来自不同 UI 元素的输入集中到一个变量中。