Не пытайтесь разделить ui
переменных между классами. Это плохой дизайн. Вместо этого добавьте методы в свои классы, которые позволят вам делать то, что вам нужно.
В вашем случае, когда вы хотите отправить текст своей строки, отредактируйте с класса replaceDlg
классу MainWindow
, вы должны использовать сигналы и слоты. Вот пример:
#include <QtWidgets>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = Q_NULLPTR) : QMainWindow(parent)
{
setCentralWidget(&text_edit);
}
public slots:
void addText(const QString &text)
{
text_edit.append(text);
}
private:
QTextEdit text_edit;
};
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = Q_NULLPTR) : QDialog(parent)
{
setLayout(new QHBoxLayout);
QPushButton *send_button = new QPushButton("Send");
layout()->addWidget(&line_edit);
layout()->addWidget(send_button);
connect(send_button, &QPushButton::clicked, this, &Dialog::sendButtonClicked);
}
signals:
void sendText(const QString &text);
private slots:
void sendButtonClicked()
{
emit sendText(line_edit.text());
accept();
}
private:
QLineEdit line_edit;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
Dialog d;
QObject::connect(&d, &Dialog::sendText, &w, &MainWindow::addText);
w.show();
d.show();
return a.exec();
}
#include "main.moc"
Зачем вам это нужно? Вы просто нарушаете инкапсуляцию здесь. Вы должны писать методы в своем классе «replacelg», который будет делать то, что вам нужно сделать. – thuga
@thuga я приму вас совет, если я знаю, и у меня есть better.but not.idonot знаю, как отправить текст у меня есть вход в lineedit, который в replacelg.so то, что метод, который я использую, может отправить текст в mainwindow ? – konalo
Вы можете испустить сигнал в вашем классе 'replaceDlg', который содержит параметр' QString' в качестве параметра. Подключите этот сигнал к слоту в классе 'MainWindow'. – thuga