0
私はmainwindow
とreplacedlg.ui
を含むプロジェクトを書いています。 mainwindow.cpp
にreplacedlg.ui
を使用します。mainwindow.cppでreplacedlg.uiを使用するにはどうしたらいいですか?
ui->button
のようなものをmainwindow.cpp
に書きたいのですが、できません。
この作業を手助けできるのは誰ですか?
私はmainwindow
とreplacedlg.ui
を含むプロジェクトを書いています。 mainwindow.cpp
にreplacedlg.ui
を使用します。mainwindow.cppでreplacedlg.uiを使用するにはどうしたらいいですか?
ui->button
のようなものをmainwindow.cpp
に書きたいのですが、できません。
この作業を手助けできるのは誰ですか?
クラス間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"
なぜそれをしたいですか?ここでカプセル化を破っているだけです。 'replacedlg'クラスに、代わりに何をする必要があるかを行うメソッドを記述する必要があります。 – thuga
@thugaもし私が知っていると助言を受け入れる私はbetter.but have not.idonot私は入力を持っていますlineeditに置き換えられたどのような方法の私は使用してmainwindowにテキストを送信することができます? – konalo
'QString'をパラメータとして含む' replaceDlg'クラスで信号を出力することができます。このシグナルを 'MainWindow'クラスのスロットに接続します。 – thuga