Qt中登录界面跳转到主界面的两种方法

1 登录界面跳转

登录界面跳转,应该是项目的常见需求了。
登录界面
输入账号、密码后,点击登录按钮跳转。
主界面

2 跳转的两种方式

这里博主介绍两种登录界面跳转到主界面的两种可行方式。

2.1 利用QDialog::Accepted

自然,这个方法创建的登录界面类需要继承QDialog类
设计好登录界面后,选择 go to slot,再选择 clicked(),然后进入其单击事件的槽函数:

/* loginwindow.cpp中 */
void loginDlg::on_login_pushButton_clicked()
{
	if (你的判断条件) {
		accept();
	}
}

整个思路就是:符合登录条件,登录界面就会调用 accept( ) 函数,并返回执行结果 QDialog::Accepted。所以还需要在main.cpp中继续添加判断代码。

/* main.cpp中 */
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;			// 主界面
    LoginWindow login;	// 登录界面
    
    if (login.exec() == QDialog::Accepted) {	// 如果符合登录条件,login执行后,必返回QDialog::Accepted
        w.show();	// 主界面显示
        return a.exec();
    }
    
    else return 0;
}

2.2 利用QObject::connect( )

该方法整体思路:点击登录界面的登录按钮,登录界面 emit 一个登录的signal,主界面接收到之后show出,然后 emit 一个已登录 signal,登录界面收到之后自己 close。
具体的 signal 和 slot 就不展示了,这些都是 Qt 的基础知识,方法只提供思路,具体实现需要自己摸索。

/* main.cpp */
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    LoginWindow login;  // 登录界面
    MainWindow w;       // 主界面

    login.show();

    QObject::connect(&login, &LoginWindow::userLogin, &w, &MainWindow::rcvLogin);   // 登录信号与主界面连接
    QObject::connect(&w, &MainWindow::closeLoginWindow, &login, &LoginWindow::loginWindowClose);    // 登录主界面后关闭登录界面
    return a.exec();
}
  • 18
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例代码,可以用于在WPF设计登录跳转界面: 首先在XAML,设计一个登录界面,可以使用TextBox控件来输入用户名和密码,Button控件来触发登录操作: ```XAML <Window x:Class="WpfApp1.MainWindow" ... Title="Login" Height="350" Width="525"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition/> </Grid.RowDefinitions> <StackPanel Grid.Row="0" Orientation="Horizontal"> <Label Content="Username: " VerticalAlignment="Center"/> <TextBox x:Name="txtUsername" Width="150" Margin="5"/> </StackPanel> <StackPanel Grid.Row="1" Orientation="Horizontal"> <Label Content="Password: " VerticalAlignment="Center"/> <PasswordBox x:Name="txtPassword" Width="150" Margin="5"/> </StackPanel> <Button Grid.Row="2" Content="Login" Width="100" Height="30" Margin="5" Click="Button_Click"/> </Grid> </Window> ``` 在代码,我们可以使用Button的Click事件来实现登录操作,如果登录成功,我们可以打开一个新的窗口,来显示用户的信息。以下是示例代码: ```C# private void Button_Click(object sender, RoutedEventArgs e) { // 获取输入的用户名和密码 string username = txtUsername.Text; string password = txtPassword.Password; // 在这里进行登录验证操作,如果成功,打开新窗口 if (username == "admin" && password == "123456") { // 打开新窗口 UserInfoWindow userInfoWindow = new UserInfoWindow(); userInfoWindow.Show(); // 关闭当前窗口 this.Close(); } else { // 如果登录失败,提示错误信息 MessageBox.Show("Invalid username or password!"); } } ``` 在打开新窗口的代码,我们创建了一个新的窗口UserInfoWindow,并调用Show()方法来显示它。同时,我们还需要关闭当前的登录窗口,以避免重复登录。如果登录失败,我们可以使用MessageBox来显示错误信息。 希望这个简单的示例代码对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值