Qt ui界面调用问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt ui界面调用问题相关的知识,希望对你有一定的参考价值。
已使用一个界面文件mainwindow.ui作为主界面,mainwindow.cpp控制该ui界面的数据,现在需要再新建个ui文件作为对话框,主界面内数据需要传递参数给该对话框,请问如何是否只是需要新建ui对话框文件,还是说相应的类文件也要建立?再问如何传参数给该对话框,并调用该对话框ui显示?
最直观的方法如楼上说的新建一个对话框ui类,利用Qt Creator的向导功能很容易实现。在主界面中显示该对话框,即在mainwindow.cpp的某个方法中调用对话框的显示方法。传递参数可以修改对话框的构造函数,或者在显示对话框之前调用它的其他函数,将参数传递进对话框。
简单的示例:
对话框类:
class MyDialog: public QDialog...
public:
...
void setSomething(const QVariant &something);
....
主界面函数
MyDialog dialog(this);
dialog.setSomething(this->some_member);
dialog.exec();
参考技术A 再兴建一个带ui的C++类吧.
ui文件光靠自己是显示不出来的,最后都还是全部转换成 C++了.
QT调用软键盘问题,要输入的编辑框在对话框Dialog中(UI界面)
问题是在输入编辑框的过程中需要使用到FocusWidget()函数,但是这个函数又是属于QWidget类的,而我用的编辑框是在Dialog下的,我想问的是有没有什么办法可以使得FocusWidget()在QDialog类下使用,C++学的不好,对类的理解还不够,希望有人能帮忙解决下问题,不胜感激!
sendCharacter()函数用来把键盘输入的内容传给编辑框
sengCharacter()函数的定义,其中用到了FocusWidget()函数
Updateposition()函数中也用到了FocusWidget()函数
好像不可以吧,FocusWidget()函数是针对QWidget类定义的,我想实现的是FocusDialog()函数,可惜QDialog类中没有这个函数啊,C++方面的知识不好,搞不清这些,有没有什么办法实现我的这个想法呢
追答才看懂你的问题= =
FocusWidget获取的是聚焦控件,这个控件和你要获取的Dialog有没有关系?
如果你要获取的是控件所在的Dialog,获取FocusWidget的父类(parent())转成QDialog就好了。
如果没有关系,那就是获取激活窗口,你看看activeWindow()这个函数行不行。
嘿嘿,谢谢了,转成QDialog确实能聚焦到Dialog上了,但是又出现别的问题,键盘的输入在Dialog中的两个lineEdit内都有,这个该怎么区分开来啊,可不可以给点策略,谢啦
追答键盘的输入在Dialog中的两个lineEdit内都有是什么意思?
是无法确认当前Focus的LineEdit?
既然已知2个LineEdit,那么它俩的指针就知道了,判断是否相等。
以上是关于Qt ui界面调用问题的主要内容,如果未能解决你的问题,请参考以下文章