C++ 如何在另一个qdialog中从主窗口访问ui?
从另一个窗体的主窗口访问QTextEdit时遇到问题。请帮忙C++ 如何在另一个qdialog中从主窗口访问ui?,c++,qt,qmainwindow,C++,Qt,Qmainwindow,从另一个窗体的主窗口访问QTextEdit时遇到问题。请帮忙 void properties::on_okWordPushButton_clicked() { if (ui->wordcombo->currentText() == "All Words") { int wordCount = notepad->textEdit->toPlainText().split(QRegExp("(\\s|\\n|\\r)+"), QString::Ski
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));
}
}
我收到一个错误,因为我无法阅读记事本->文本编辑您不能这样做,
ui
是小部件的私有成员,请创建一个返回或设置所需内容的函数 您至少可以使用两种可能性:
//mainwindow.cpp
auto myProperties=新属性(记事本->文本编辑);
...
//属性
QTextEdit*outerEditor;
//properties.cpp
属性::属性(QTextEdit*编辑器){
outerEditor=编辑器;
...
}
然后,您可以在插槽上使用:
//MainWindow.cpp
auto myProperties=新属性(记事本->文本编辑);
连接(此->文本编辑,QOverload::of(&QTextEdit::valueChanged),myProperties,GetNewValue);
//属性
void GetNewValue(QString val);
//properties.cpp
void属性::GetNewValue(QString val){
ui->wordcountlabel->setText(QString::number(val.toPlainText().split(QRegExp(“(\\s | \\n | \\r)+”),QString::Skipmptyparts.count());
}
提供语义问题。31:25“记事本”未引用值。我已包括“notepad.h”和“ui\u notepad.h”并且记事本实例设置为公共。如果有帮助,我可以共享我的整个文件。不要访问整个ui,而是连接窗口和对话框,使用信号槽传递所需的最小数据。这可以通过在两个窗口/窗体之间使用signal/slot
来完成。
int wordCount = editor->toPlainText().split(QRegExp("(\\s|\\n|\\r)+"), QString::SkipEmptyParts).count();