如何从主窗口访问另一个windows ui? >我在QT中使用C++,我希望能够在主窗口的对话框页面上批准用户名和密码。 这是我到目前为止所拥有的 //Login QString username1 = ui.employeelogindialog->Username->text(); QString password1 = ui.employeelogindialog->Password->text();

如何从主窗口访问另一个windows ui? >我在QT中使用C++,我希望能够在主窗口的对话框页面上批准用户名和密码。 这是我到目前为止所拥有的 //Login QString username1 = ui.employeelogindialog->Username->text(); QString password1 = ui.employeelogindialog->Password->text();,c++,qt,C++,Qt,有一个错误的说法 mainwindow.cpp:37:27:错误:成员引用类型“Ui::EmployeeloginDialog*”是指针;你想用'->'吗 如何解决此问题?要从另一个小部件获取mainwindow的数据,您可以为此小部件创建信号并在mainwindow cpp内发出 您的ui指针应该是private,以保护它 例如,小部件的类别: #include "ui_widget.h" class Widget: public QWidget, private Ui::Widget {

有一个错误的说法

mainwindow.cpp:37:27:错误:成员引用类型“Ui::EmployeeloginDialog*”是指针;你想用'->'吗


如何解决此问题?

要从另一个小部件获取mainwindow的数据,您可以为此小部件创建信号并在mainwindow cpp内发出

您的
ui
指针应该是
private
,以保护它

例如,小部件的类别:

#include "ui_widget.h"

class Widget: public QWidget, private Ui::Widget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    QLineEdit *Username= nullptr;
    QLineEdit *Password= nullptr;

signals:
    void SendUsername(const QString &name);
    void SendPassword(const QString &password);

private slots:
    void ReturnPressedForLineEdit1();
    void ReturnPressedForLineEdit2();

private:
    QString username;
    QString password;

private:
    Ui::Widget *ui; //HERE <----------------
};

要从另一个小部件获取mainwindow的数据,您可以为此小部件创建信号,并在mainwindow cpp内发出信号

您的
ui
指针应该是
private
,以保护它

例如,小部件的类别:

#include "ui_widget.h"

class Widget: public QWidget, private Ui::Widget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    QLineEdit *Username= nullptr;
    QLineEdit *Password= nullptr;

signals:
    void SendUsername(const QString &name);
    void SendPassword(const QString &password);

private slots:
    void ReturnPressedForLineEdit1();
    void ReturnPressedForLineEdit2();

private:
    QString username;
    QString password;

private:
    Ui::Widget *ui; //HERE <----------------
};

错误文本足够清晰。它表示“ui”是一个指针,因此,您必须使用“->”而不是“.”:


错误文本足够清晰。它表示“ui”是一个指针,因此,您必须使用“->”而不是“.”:

核对
//slots should be with (QString &string) args
QObject::connect(Mainwindow::objectOfYourOwnWidget, &Widget::SendUsername, this, &Mainwindow::GetUsername);
QObject::connect(Mainwindow::objectOfYourOwnWidget, &Widget::SendPassword, this, &Mainwindow::GetPassword);
    QString username1 = ui->employeelogindialog->Username->text();
    QString password1 = ui->employeelogindialog->Password->text();