如何在另一个 qdialog 中从 main window 访问 ui?
How to access ui from main window in another qdialog?
我无法从另一种形式的主要 window 访问 QTextEdit。请帮忙。
void properties::on_okWordPushButton_clicked()
{
if (ui->wordcombo->currentText() == "All Words") {
int wordCount = notepad->textEdit->toPlainText().split(QRegExp("(\s|\n|\r)+"), QString::SkipEmptyParts).count();
ui->wordcountlabel->setText(QString::number(wordCount));
}
}
由于无法读取记事本->textEdit
,我遇到了错误
你不能这样做,ui
是小部件的私有成员,创建一个 returns 或设置你需要的函数!
您至少可以使用两种可能性:
- 肮脏的方式:
在创建表单时,将指针传递给您的 QTextEdit:
// mainwindow.cpp
auto myProperties = new properties(notepad->textEdit);
...
// properties.h
QTextEdit *outerEditor;
// properties.cpp
properties::properties(QTextEdit *editor) {
outerEditor = editor;
...
}
然后,您可以在您的插槽上使用:
int wordCount = editor->toPlainText().split(QRegExp("(\s|\n|\r)+"), QString::SkipEmptyParts).count();
- Qt 方式:
记住 - signals/slots 很棒。
在表单创建之后,您可以将来自 MainWindow 的信号连接到在 QTextEdit 中传递文本的属性并将其存储在本地:
// MainWindow.cpp
auto myProperties = new properties(notepad->textEdit);
connect(this->textEdit, QOverload<QString>::of(&QTextEdit::valueChanged), myProperties, GetNewValue);
// properties.h
void GetNewValue(QString val);
// properties.cpp
void properties::GetNewValue(QString val) {
ui->wordcountlabel->setText(QString::number(val.toPlainText().split(QRegExp("(\s|\n|\r)+"), QString::SkipEmptyParts).count());
}
我无法从另一种形式的主要 window 访问 QTextEdit。请帮忙。
void properties::on_okWordPushButton_clicked()
{
if (ui->wordcombo->currentText() == "All Words") {
int wordCount = notepad->textEdit->toPlainText().split(QRegExp("(\s|\n|\r)+"), QString::SkipEmptyParts).count();
ui->wordcountlabel->setText(QString::number(wordCount));
}
}
由于无法读取记事本->textEdit
,我遇到了错误你不能这样做,ui
是小部件的私有成员,创建一个 returns 或设置你需要的函数!
您至少可以使用两种可能性:
- 肮脏的方式: 在创建表单时,将指针传递给您的 QTextEdit:
// mainwindow.cpp
auto myProperties = new properties(notepad->textEdit);
...
// properties.h
QTextEdit *outerEditor;
// properties.cpp
properties::properties(QTextEdit *editor) {
outerEditor = editor;
...
}
然后,您可以在您的插槽上使用:
int wordCount = editor->toPlainText().split(QRegExp("(\s|\n|\r)+"), QString::SkipEmptyParts).count();
- Qt 方式: 记住 - signals/slots 很棒。
在表单创建之后,您可以将来自 MainWindow 的信号连接到在 QTextEdit 中传递文本的属性并将其存储在本地:
// MainWindow.cpp
auto myProperties = new properties(notepad->textEdit);
connect(this->textEdit, QOverload<QString>::of(&QTextEdit::valueChanged), myProperties, GetNewValue);
// properties.h
void GetNewValue(QString val);
// properties.cpp
void properties::GetNewValue(QString val) {
ui->wordcountlabel->setText(QString::number(val.toPlainText().split(QRegExp("(\s|\n|\r)+"), QString::SkipEmptyParts).count());
}