社区
Qt
帖子详情
qt .cpp文件无法调用ui文件里的控件
sinat_16722523
2017-05-17 12:57:50
用qt设计器在face.ui界面添加了一个verticalLayout控件,在face.cpp中,通过ui->控件名的方法调用,调用不出来。求解怎么解决这个问题呢?
imgLabel = new ImgLabel(this);
ui->verticalLayout->addWidget(imgLabel);
...全文
3314
14
打赏
收藏
qt .cpp文件无法调用ui文件里的控件
用qt设计器在face.ui界面添加了一个verticalLayout控件,在face.cpp中,通过ui->控件名的方法调用,调用不出来。求解怎么解决这个问题呢? imgLabel = new ImgLabel(this); ui->verticalLayout->addWidget(imgLabel);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
为何码
2019-09-05
打赏
举报
回复
这个好恶心,建了三个窗口,就只有一个窗不能这样访问....理解不了
心火合滨
2019-01-14
打赏
举报
回复
我也遇到相似问题?更改控件的命名、关闭Qt creator还是没有解决?
10: error: no member named 'FilePathLineEdit' in 'Ui::MainWindow'???
Zeroonezeroone
2017-11-17
打赏
举报
回复
引用 9 楼 sinat_16722523 的回复:
已解决,不用在界面上添加该控件,改用代码生成即可
你是怎么解决的呢???我也遇到这样的问题,求赐教
glucose100
2017-09-19
打赏
举报
回复
如果采用自动创建的qt项目的话,应该在.h文件中有ui的声明,在.cpp文件中有setupUi函数.如果没有,或者是临时导入新建的ui文件的话,可能在cpp中就需要通过模块 uitools 来把 ui 文件load 进cpp中,并用相应的声明来绑定到每个元素上面才能使用.
qq_33253798
2017-09-16
打赏
举报
回复
求问怎么用代码解决?
sinat_16722523
2017-05-21
打赏
举报
回复
已解决,不用在界面上添加该控件,改用代码生成即可
sinat_16722523
2017-05-18
打赏
举报
回复
好像都不行啊,错误代码是 error: 'class Ui::Face' has no member named 'verticalLayout'
军神关云长_大凡
2017-05-18
打赏
举报
回复
首先你要确认ui界面上的verticalLayout控件的控件名确实命名为verticalLayout,其实你去ui.cpp所在的类中查看是否确实存在名字叫vverticalLayout的控件,如果都存在,则关闭工程再打开应该是可以调用的,如果不存在,那你得把名字改对才调得了。
大陈1108
2017-05-18
打赏
举报
回复
如果没有写错,可以编译一下ui文件或者打开一下ui文件,经常遇到,这个问题有点恶心
军神关云长_大凡
2017-05-17
打赏
举报
回复
首先把ui界面保存一下,然后把项目工程关闭,再重新打开,如果使用->还是没有提示弹出来,使用查看定义跳过去查看变量;如果还是跳转不过来,就单独打开ui.h类头文件,这个时候应该可以打开了。
Z_墨脱
2017-05-17
打赏
举报
回复
重新构建一下,或者程序重新打开
懒懒的吉他手
2017-05-17
打赏
举报
回复
是无法使用报错还是说只是不会自动提示?
sinat_16722523
2017-05-17
打赏
举报
回复
引用 1 楼 direxe 的回复:
手册查一下,应该有答案
能具体帮我解决一下嘛,查手册挺难找到的
direxe
2017-05-17
打赏
举报
回复
手册查一下,应该有答案
Qt
中怎么用
Ui
文件
Qt
中怎么用
Ui
文件
第一步, 制作
ui
文件
。 首先应该用
Qt
Designer绘制一个自己的界面,并存为myform.
ui
(这
里
的myform可以用自己喜欢的名字代替)。 在制作自己的界面
文件
时要注意以下几个要点: 1、要记住
ui
文件
的名字,因为
ui
c生成的代码会存在
ui
_myform.h
里
2、要记住主窗体的object name, 因为
ui
文件
提供的类名将以这个form的名字来命名 3、要特别注意你的form选择的基类要和你代码中的窗体类兼容 4、要记得给每个后面需要访问到的
控件
起一个有意义并且好记的object name, 因为
ui
文件
提供的
控件
将以这些object name来命名 清楚了以上几点,在代码中使用你的
ui
文件
就会变得非常简单。 第二步,将
ui
文件
加入工程 这一步最简单,只需要修改pro
文件
,加入FORMS+=myform.
ui
qmake -project命令也可以识别后缀名为
ui
的
文件
,并将之加入工程。 第三步,在代码中引用
ui
文件
官方介绍的使用
ui
文件
的方法有三种,一个是直接引用,二是单继承,三是多继承。 第一种方法其实很不实用,大家去看一下文档中的例子就可以了;第二种和第三种没有本质的差别,可以并作一类,这
里
做重点介绍。
ui
文件
最终会被翻译成标准的C++代码,并存入一个.h
文件
中,这个过程在
调用
make之后才进行,所以初始情况下你是看不到这个
ui
_myform.h
文件
的,只有经过了make过程该头
文件
才生成。不过没关系,没有这个
文件
我们照样能写出正确的代码。 单继承方式简单来说就是在代码中首先要自定义一个子类(后文称为MyForm),该类要从form对应的窗体类(或其兼容的子类)派生;并用
ui
生成的类定义一个类
里
的成员变量(后文成文my
ui
)。这样在MyForm的构造函数中可以直接
调用
my
ui
和my
ui
中的变量和函数,使用起来很方便。 举例说明, 比如这
里
有一个
ui
文件
叫myform.
ui
,
ui
文件
里
定义的窗体名字为BigWidget,上面摆放了一个单行编辑
控件
叫lineeditName: //myform.h #include “
ui
_myform.h” class MyForm: public QWidget { Q_OBJECT public: MyForm(QWidget*parent) { my
ui
.setup
Ui
(this); } private:
Ui
::BigWidget my
ui
; private: void my_function(); }; 上面这段简单的类的声明是前文所述前三点要点的最佳例证,请对照要点的文字描述和具体的代码体会其中的含义。这
里
还有一点比较有意思的地方,就是
ui
文件
提供的类被包含在了名为
Ui
的name space
里
,这样做的目的是将
ui
文件
的命名空间与用户的代码分离,避免两者出现命名冲突的情况。相应的,我们写代码的时候也要注意在使用
ui
文件
中的类时要用“
Ui
::”的方式进行引用。 再来看
cpp
文件
//myform.
cpp
#include #include “myform.h” void my_function(void) { QMessageBox::information(this, “Name”, my
ui
.lineeditName->text()); } 这
里
随便写了一个函数,为了说明如何在窗体类
里
调用
ui
文件
中定义的
控件
。这段代码非常简单,就不多作说明了。 有了单继承的基础,学习多继承是小菜一碟。来段代码看一下就明白了。 //myform.h #include “
ui
_myform.h” class MyForm: public QWidget, public
Ui
::BigWidget { Q_OBJECT public: MyForm(QWidget*parent) { setup
Ui
(this); } private: void my_function(); }; //myform.
cpp
#include #include “myform.h” void my_function(void) { QMessageBox::information(this, “Name”, lineeditName->text()); } 是不是不用说明大家也能明白呢?多继承其实就是不仅从form需要的窗体类去派生,还要加上
ui
提供的类本身。这样带来的好处是你的窗体类继承了
ui
里
的所有
控件
和方法,
调用
时就可以少写一些字。 单继承和多继承这两种方法没有好坏之分,大家可以根据自己的编程习惯取舍。 第四步,编译、验证在pro
文件
包含正确FORMS信息的情况下,运行qmake; make就可以编译工程了。 make时如果你认真看一下输出就会发现,make在最开始编译的时候就会自动
调用
ui
c去生成需要的代码。经过make之后
ui
_myform.h
文件
就生成了,建议大家去看一下这个
文件
的内容。
把
Qt
的界面
文件
(.
ui
文件
)生成源
文件
(.h或.
cpp
)封装成链接库
前言 在用
Qt
做开发时,为了方便快速,一般都使用
Qt
设计师界面类来做界面相关的布局,这个类在当前工程中是没有.
cpp
或.h
文件
的,但主类又有引入了这个头
文件
,点开转到定义或声明时,是打不开的,如下图: 如果要把整个项目导成dll和lib,就按当前的
文件
导出,是会报找不到
ui
_XXX类的路径的。那什么样才能把设计好的.
ui
界面导成dll和lib呢,看了好多种办法,有真接是用手写代码的方式去而已界面...
QT
在MainWindow外的
cpp
文件
调用
ui
的组件
在
QT
学习过程中,需要在外部
cpp
文件
调用
主界面的组件,可以参考下面的方法
如何将
Qt
Designer 产生的*.
UI
文件
转换成
QT
可以使用的*.H和*.
CPP
把
UI
C.exe和你要转换的xxx.
ui
文件
拷贝到同一目录。 开始菜单,运行CMD 进入
ui
c.exe和xxx.
ui
的目录,运行以下命令:
ui
c xxx.
ui
-o xxx.h 生成.h
文件
ui
c xxx.
ui
-i xxx.h -o xxx.
cpp
生成.
cpp
文件
生成头
文件
没问题,但在生成
cpp
文件
时,给了这么个提示(如图),并且没有生成.
cpp
文件
!
qt
在
ui
界面添加
控件
后在
cpp
文件
中
无法
调用
?
问题:
qt
在
ui
界面添加
控件
后在
cpp
文件
中
无法
调用
? 解决方法:在b
ui
ld选项中选择“重新b
ui
ld项目”,再次在
cpp
中
调用
添加的
控件
发现可以
调用
了。 还有一种情况导致添加
控件
后
无法
调用
,就是没有导入
ui
_xxx.h
文件
,xxx是
ui
界面的名称。
ui
_xxx.h
文件
是编译
ui
界面的xml
文件
时自动生成的,在项目中是一个隐藏
文件
,所以可能在项目的路径下没有显示,但是在添加
控件
后一定要...
Qt
16,173
社区成员
26,583
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章