QT开发中文网

c++中如何使功能界面和登录界面连接起来代码

在C++中,可以使用信号和槽机制来实现功能界面和登录界面的连接。下面是一个简单的示例代码:

// 登录窗口
class LoginWindow : public QMainWindow {
    Q_OBJECT

public:
    LoginWindow(QWidget *parent = nullptr);

signals:
    void loginSuccess(); // 定义登录成功信号

private slots:
    void login(); // 处理登录按钮点击事件

private:
    QLineEdit *usernameInput; // 用户名输入框
    QLineEdit *passwordInput; // 密码输入框
    QLabel *errorLabel; // 错误信息标签
};

LoginWindow::LoginWindow(QWidget *parent)
    : QMainWindow(parent) {
    // 初始化控件...
}

void LoginWindow::login() {
    QString username = usernameInput->text();
    QString password = passwordInput->text();

    if (username == "admin" && password == "123456") {
        emit loginSuccess(); // 发送登录成功信号
        close(); // 关闭登录窗口
    } else {
        errorLabel->setText("Invalid username or password.");
    }
}


// 功能窗口
class FunctionWindow : public QMainWindow {
public:
    FunctionWindow(QWidget *parent = nullptr);

private slots:
    void addProduct(); // 处理添加商品按钮点击事件

private:
	LoginWindow *loginWin;  // 登录窗口指针,用于连接信号和槽
	QTableWidget *productTable; // 商品表格控件
};

FunctionWindow::FunctionWindow(QWidget *parent)
	: QMainWindow(parent) {
	loginWin = new LoginWindow;
	productTable = new QTableWidget(this);

	connect(loginWin, &LoginWindow::loginSuccess, this, &FunctionWindow::show); // 连接登录成功信号和功能窗口的显示函数

	// 初始化控件...
}

void FunctionWindow::addProduct() {
    if (!loginWin->isVisible()) {
        loginWin->show(); // 如果登录窗口未显示,则显示登录窗口
    }
    // 处理添加商品逻辑...
}

在这个示例代码中,我们定义了一个loginSuccess()信号,并在用户输入正确的用户名和密码并点击登录按钮时发送该信号。然后,在功能窗口中,我们创建了一个指向登录窗口对象的指针,并使用connect()函数连接了loginSuccess()信号和功能窗口的显示函数。当用户在功能窗口中点击添加商品按钮时,程序会判断登录窗口是否已经显示,如果没有则显示登录窗口;否则直接执行添加商品逻辑。

需要注意的是,在上述代码中,我们在FunctionWindow类的构造函数中创建了一个新的LoginWindow对象。如果您希望在应用程序运行过程中只有一个实例化的LoginWindow对象,则可以将其作为成员变量传递给FunctionWindow类,并在构造函数或其他地方进行初始化。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=2050

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?