Qt不同界面内程序的执行顺序

__Ryan 2016-08-12 05:41:56
做一个登陆界面,输入用户名密码,匹配成功后进入主界面,然后在主界面内的函数需要使用输入的用户名、密码。
现在发现调用函数执行在登陆之前,所以调用函数输入都为空。
怎么让调用函数执行在]登录之后呢?

以下是匹配成功后的操作
if (::CheckUser(&user) == GW_JASON_USUCCESS)
{
//this->hide();
this->close();
m_mainWindow.windoAwShow();
}

主函数:
int main(int argc, char *argv[])
{


QApplication a(argc, argv);
Widget w(NULL);
w.show();

return a.exec();
}
...全文
1107 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
__Ryan 2016-08-15
  • 打赏
  • 举报
回复
引用 5 楼 u013466477 的回复:
都是顺序执行,除了线程、信号与槽、事件等 输入用户名密码是对话框,dialog.exec()弹出对话框,输入验证成功执行this->accept();就是关闭对话框,肯定没有问题 如果登陆用QWidget也是一样的,改为show和close 你的不按顺序执行??是不是你写在什么事件里面了,是什么信号提前触发了吧
我再试着说清楚一点。 if (::CheckUser(&user) == GW_JASON_USUCCESS) { this->close(); m_mainWindow.exec(); } 上面代码表示:点击登录按钮,如果信息匹配,打开新的页面(m_mainWindow)。现在m_mainwindow里有一些函数,比如设置lable的显示内容。 现在问题是我点击编译运行,还没点击button,m_mainWindow里label的内容就会显示出来。而我希望label的内容是根据输入的用户名密码匹配之后调用的服务器端的数据。 就是想让m_mainWindow里的内容是从服务器端获取的然后再显示。而不是先于点击button就显示。
冷静忍耐 2016-08-15
  • 打赏
  • 举报
回复
都是顺序执行,除了线程、信号与槽、事件等 输入用户名密码是对话框,dialog.exec()弹出对话框,输入验证成功执行this->accept();就是关闭对话框,肯定没有问题 如果登陆用QWidget也是一样的,改为show和close 你的不按顺序执行??是不是你写在什么事件里面了,是什么信号提前触发了吧
Little柯南 2016-08-15
  • 打赏
  • 举报
回复
深深表示没理解你说的,请将你表达的一条条按照执行顺序列出来,最后写可能需要的特殊功能方法的需求
__Ryan 2016-08-15
  • 打赏
  • 举报
回复
引用 9 楼 u013466477 的回复:
推荐你这么写,登录界面写在MainWindow的构造函数里,用QDialog,匹配则继续进行MainWindow构造,否则直接退出 int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } 槽函数里改变progressBar的值肯定是可以的 可能是setRange的原因吧,setRange别写在槽函数里
非常感谢你,你这种方法解决了我的问题
冷静忍耐 2016-08-15
  • 打赏
  • 举报
回复
推荐你这么写,登录界面写在MainWindow的构造函数里,用QDialog,匹配则继续进行MainWindow构造,否则直接退出 int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } 槽函数里改变progressBar的值肯定是可以的 可能是setRange的原因吧,setRange别写在槽函数里
__Ryan 2016-08-15
  • 打赏
  • 举报
回复
引用 7 楼 u013466477 的回复:
[quote=引用 6 楼 sinat_30440627 的回复:] [quote=引用 5 楼 u013466477 的回复:] 都是顺序执行,除了线程、信号与槽、事件等 输入用户名密码是对话框,dialog.exec()弹出对话框,输入验证成功执行this->accept();就是关闭对话框,肯定没有问题 如果登陆用QWidget也是一样的,改为show和close 你的不按顺序执行??是不是你写在什么事件里面了,是什么信号提前触发了吧
我再试着说清楚一点。 if (::CheckUser(&user) == GW_JASON_USUCCESS) { this->close(); m_mainWindow.exec(); } 上面代码表示:点击登录按钮,如果信息匹配,打开新的页面(m_mainWindow)。现在m_mainwindow里有一些函数,比如设置lable的显示内容。 现在问题是我点击编译运行,还没点击button,m_mainWindow里label的内容就会显示出来。而我希望label的内容是根据输入的用户名密码匹配之后调用的服务器端的数据。 就是想让m_mainWindow里的内容是从服务器端获取的然后再显示。而不是先于点击button就显示。[/quote] 还是有点没看懂...你是登陆有一个界面,然后还有一个主界面,主界面先不显示。 想让登录界面点击登录,如果账号密码匹配就关掉登录框,显示主界面?? 你的Widget是什么界面???登录界面还是mainwindow? int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w(NULL); w.show(); return a.exec(); } [/quote] 是这个逻辑,widget是登录界面,mainwindow是主页面。 还有我在一个按钮的槽函数里改变progressBar的值,为什么没有显示。而在new的时候设置就可以显示。 void PageOneBottomBar::slot_showMsg() { m_pProgressBar->setRange(0,10); m_pProgressBar->setValue(6); }在槽里设置,无法正确显示。 m_pProgressBar = new QProgressBar(this); m_pProgressBar->setFixedHeight(10); m_pProgressBar->setFixedWidth(200); m_pProgressBar->setRange(0,10); m_pProgressBar->setValue(4); 初始化的时候可以正常显示。
冷静忍耐 2016-08-15
  • 打赏
  • 举报
回复
引用 6 楼 sinat_30440627 的回复:
[quote=引用 5 楼 u013466477 的回复:] 都是顺序执行,除了线程、信号与槽、事件等 输入用户名密码是对话框,dialog.exec()弹出对话框,输入验证成功执行this->accept();就是关闭对话框,肯定没有问题 如果登陆用QWidget也是一样的,改为show和close 你的不按顺序执行??是不是你写在什么事件里面了,是什么信号提前触发了吧
我再试着说清楚一点。 if (::CheckUser(&user) == GW_JASON_USUCCESS) { this->close(); m_mainWindow.exec(); } 上面代码表示:点击登录按钮,如果信息匹配,打开新的页面(m_mainWindow)。现在m_mainwindow里有一些函数,比如设置lable的显示内容。 现在问题是我点击编译运行,还没点击button,m_mainWindow里label的内容就会显示出来。而我希望label的内容是根据输入的用户名密码匹配之后调用的服务器端的数据。 就是想让m_mainWindow里的内容是从服务器端获取的然后再显示。而不是先于点击button就显示。[/quote] 还是有点没看懂...你是登陆有一个界面,然后还有一个主界面,主界面先不显示。 想让登录界面点击登录,如果账号密码匹配就关掉登录框,显示主界面?? 你的Widget是什么界面???登录界面还是mainwindow? int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w(NULL); w.show(); return a.exec(); }
__Ryan 2016-08-14
  • 打赏
  • 举报
回复
引用 2 楼 Coutel 的回复:
因为我不确定我是不是没搞清你的意思,所以不知道我能不能帮到你。 为什么你要调用的函数执行在了登录之前呢? if (::CheckUser(&user) == GW_JASON_USUCCESS),如果这个if语句内是匹配条件的话,那么把函数调用写在if语句中不就行了? 匹配成功就调用了。那函数怎么会执行在匹配之前呢?
你说的这个我懂,还想问一下,qt里多个界面里的函数执行顺序是怎样的。如果没有类似按钮的关联,他们谁先谁后呢?
Coutel 2016-08-13
  • 打赏
  • 举报
回复
因为我不确定我是不是没搞清你的意思,所以不知道我能不能帮到你。 为什么你要调用的函数执行在了登录之前呢? if (::CheckUser(&user) == GW_JASON_USUCCESS),如果这个if语句内是匹配条件的话,那么把函数调用写在if语句中不就行了? 匹配成功就调用了。那函数怎么会执行在匹配之前呢?
__Ryan 2016-08-12
  • 打赏
  • 举报
回复
不能写在button的click槽中,因为主页面的控件很多,都是分别写的

16,794

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧