Согласно предоставленному вами коду, вам кажется, что вы не знаете, что:
Qt работает асинхронно , например значение a
, которое выкак получить значение перед отображением окна, какое значение оно будет иметь?Ну, у него будет пустая строка, так в какой момент я должен попросить текст?прямо в слоте, который вызывается при нажатии кнопки.
Переменные с одинаковыми именами не означают, что они одинаковы, например, у вас есть 2 QTextEdit с именем текстаэто разные объекты.
Итак, вы понимаете, что объекты (виджеты) должны иметь одинаковую область видимости, чтобы иметь возможность взаимодействовать друг с другом, поэтому я создам класс, который наследуется отQWidget и имеет другие элементы в качестве атрибутов.
#include <QtGui>
#include <QtCore>
class Widget: public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent=nullptr):
QWidget(parent)
{
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(&label);
layout->addWidget(&line);
layout->addWidget(&button);
layout->addWidget(&textedit);
label.setText("Enter something:");
label.setAlignment(Qt::AlignHCenter);
button.setText("Convert");
connect(&button, SIGNAL(clicked()), this, SLOT(onClicked()));
}
private slots:
void onClicked(){
QString a = line.text();
QString b = "This line is to be added";
QString c = a+b;
textedit.setText(c); // or textedit.append(c);
}
private:
QLabel label;
QLineEdit line;
QPushButton button;
QTextEdit textedit;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Widget w;
w.show();
return app.exec();
}
#include "sample.moc"