如何在Qt中将数据从一种形式传递到另一种形式? 我创建了一个QWidgetProgect - > QtGuiApplication,我目前有两种形式。现在我想将数据从一种形式传递到另一种形式。
我怎样才能做到这一点?
感谢。
答案 0 :(得分:16)
textChanged
连接或textEdited
信号)假设您有两个窗口:FirstForm
和SecondForm
。 FirstForm
在其用户界面上有QLineEdit
,名为myTextEdit
,SecondForm
在其用户界面上有一个QListWidget
,名为myListWidget
。
我还假设您在应用程序的main()
函数中创建了两个窗口。
<强> firstform.h:强>
class FistForm : public QMainWindow
{
...
private slots:
void onTextBoxReturnPressed();
signals:
void newTextEntered(const QString &text);
};
<强> firstform.cpp 强>
// Constructor:
FistForm::FirstForm()
{
// Connecting the textbox's returnPressed() signal so that
// we can react to it
connect(ui->myTextEdit, SIGNAL(returnPressed),
this, SIGNAL(onTextBoxReturnPressed()));
}
void FirstForm::onTextBoxReturnPressed()
{
// Emitting a signal with the new text
emit this->newTextEntered(ui->myTextEdit->text());
}
<强> secondform.h 强>
class SecondForm : public QMainWindow
{
...
public slots:
void onNewTextEntered(const QString &text);
};
<强> secondform.cpp 强>
void SecondForm::onNewTextEntered(const QString &text)
{
// Adding a new item to the list widget
ui->myListWidget->addItem(text);
}
<强>的main.cpp 强>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// Instantiating the forms
FirstForm first;
SecondForm second;
// Connecting the signal we created in the first form
// with the slot created in the second form
QObject::connect(&first, SIGNAL(newTextEntered(const QString&)),
&second, SLOT(onNewTextEntered(const QString&)));
// Showing them
first.show();
second.show();
return app.exec();
}
答案 1 :(得分:2)
你也可以使用指针来访问另一种形式的QTextEdit(假设你正在使用它)。
以下来自Venemo的示例(其中FirstForm具有QTextEdit和SecondForm是您需要访问QTextEdit的那个):
<强> firstform.h:强>
class FistForm : public QMainWindow
{
...
public:
QTextEdit* textEdit();
};
<强> firstform.cpp:强>
QTextEdit* FirstForm::textEdit()
{
return ui->myTextEdit;
}
然后,您可以使用类似的方式访问SecondForm中的QTextEdit文本(假设您的FirstForm实例名为firstForm):
void SecondForm::processText()
{
QString text = firstForm->textEdit()->toPlainText();
// do something with the text
}