【发布时间】:2017-10-31 00:54:19
【问题描述】:
我正在尝试按照此处的 Qt5 Visual Studio 教程进行操作: http://doc.qt.io/qtvstools/qtvstools-getting-started.html
本教程制作了一个主窗口和一个弹出对话框。主窗口正在工作,当您单击主窗口上的“添加”按钮时,对话框将按原样显示。
在对话框中,有两个我想从中获取值的 QLineEdit 对象。但我似乎无法访问对话框的这些成员。
对话框窗口中的两个对象是“nameEdit”(突出显示)和“emailEdit”(在其下方):
我得到的错误:
-“类‘AddDialog’没有成员‘nameEdit’。
-“类 'AddDialog' 没有成员 'emailEdit'
您知道我无法访问 AddDialog 类成员的原因是什么吗?
这是 AddressBook.cpp 文件(我的主窗口)。
#include "AddressBook.h"
#include "AddDialog.h"
#include "ui_AddDialog.h"
AddressBook::AddressBook(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
void AddressBook::on_addButton_clicked()
{
AddDialog dialog(this);
if (dialog.exec())
{
QString name = dialog.nameEdit->text();
QString email = dialog.emailEdit->text();
if (!name.isEmpty() && !email.isEmpty())
{
QListWidgetItem *item = new QListWidgetItem(name, ui.addressList);
item->setData(Qt::UserRole, email);
ui.addressList->setCurrentItem(item);
}
}
}
void AddressBook::on_addressList_currentItemChanged()
{
QListWidgetItem *curItem = ui.addressList->currentItem();
if (curItem) {
ui.nameLabel->setText("Name: " + curItem->text());
ui.emailLabel->setText("Email: " + curItem->data(Qt::UserRole).toString());
}
else {
ui.nameLabel->setText("<No item selected>");
ui.emailLabel->clear();
}
}
AddDialog.h(对话框):
#include <QDialog>
#include "ui_AddDialog.h"
class AddDialog : public QDialog
{
Q_OBJECT
public:
AddDialog(QWidget *parent = Q_NULLPTR);
~AddDialog();
private:
Ui::AddDialog ui;
};
和AddDialog.cpp(对话框):
#include "AddDialog.h"
AddDialog::AddDialog(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
}
我试图只复制我认为与问题相关的代码,但以防万一,如果需要,这里是其他所有内容: https://github.com/davek99/DK-QT_Address_Book/
【问题讨论】:
标签: c++ visual-studio qt dialog qt5