Qt creator中使用.ui文件的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt creator中使用.ui文件的问题相关的知识,希望对你有一定的参考价值。
我在Qt creator中新建了一个gotocell.ui文件并且也生成了ui_gotocell.h文件
ui_gotocell.h文件内容如下(... 处表示省略了):
现在使用多继承的方法来调用已经设计好的界面,新的类我命名为MyGoToCell
mygotocell.h文件如下:
mygotocell.c文件如下:
可是编译的时候怎么也通不过不知道是为什么,求解答!编译时报错信息如下:
D:\QT\MainFrame\MainFrame\mygotocell.cpp:3: 错误:default argument given for parameter 1 of 'MyGoToCell::MyGoToCell(QWidget*)' [-fpermissive]
D:\QT\MainFrame\MainFrame\mygotocell.cpp:1: In file included from ..\MainFrame\mygotocell.cpp:1:0:
D:\QT\MainFrame\MainFrame\mygotocell.h:10: 错误:after previous specification in 'MyGoToCell::MyGoToCell(QWidget*)' [-fpermissive]
D:\QT\MainFrame\MainFrame\mygotocell.cpp:-1: In constructor 'MyGoToCell::MyGoToCell(QWidget*)':
D:\QT\MainFrame\MainFrame\mygotocell.cpp:5: 错误:no matching function for call to 'MyGoToCell::setupUi(MyGoToCell* const)'
D:\QT\MainFrame\MainFrame\mygotocell.cpp:5: candidate is:
D:\QT\MainFrame\MainFrame\mygotocell.h:3: In file included from ..\MainFrame\mygotocell.h:3:0,
D:\QT\MainFrame\MainFrame\mygotocell.cpp:1: from ..\MainFrame\mygotocell.cpp:1:
D:\QT\MainFrame\MainFrame-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug\ui_gotocell.h:41: void Ui_GoToCellDialog::setupUi(QDialog*)
D:\QT\MainFrame\MainFrame-build-Desktop_Qt_5_0_1_MinGW_32bit-Debug\ui_gotocell.h:41: note: no known conversion for argument 1 from 'MyGoToCell* const' to 'QDialog*'
我是按照Qt助手里面的例子来的呀?为什么这么多错误呢?我才刚开始学习Qt,真心求解答!谢谢!
第一个错误是:在函数声明和实现的签名中两次使用默认值,这个算是编译器的警告,而算不上是错误除非是严格警告(把所有的警告当做错误对待)。
第二个就是setupUI的问题了,这个你设计其中选择的是dialog,但是你多继承的时候用的是qwidget……把父类转换成为子类是无法通过隐式转换完成的,需要使用dynamic_cast或者强制类型转换变成一个子类对象,不过我认为dynamic_cast会返回空,因为这种转换时不安全的。
综上,两个错误和Qt没一毛钱的关系,都是C++最基本的问题。 参考技术A 楼上好像很牛叉的样子·····不过我大致对照了一下 楼主的代码完全是按教程复制的吧?···而且我按教程成功运行了·楼主留下QQ 我把我的发给你 你运行一下试试?如果可以运行 你自己比对一下哪里不一样;如果不行 可能是环境?我也是菜鸟 说不来。
Qt Creator 代码文件重构
【中文标题】Qt Creator 代码文件重构【英文标题】:Qt Creator Code File Refactoring 【发布时间】:2011-05-06 19:21:29 【问题描述】:我想知道是否有人知道使用 QTCreator 在我的 QT 项目中重构代码文件的快速简便的方法?具体来说,我正在尝试组织我的源文件,并且必须返回项目文件并更改每个文件的文件路径有点痛苦。更不用说移动对话框类更糟糕(项目中不包含 .ui 文件,但您也必须更改这些文件。
【问题讨论】:
【参考方案1】:“集成”的唯一文件重命名/移动支持(即它自动更新您的项目文件)是使用带有文件列表的活动项目窗格,右键单击并选择“重命名”,使用“../../ some/new/dir/name.cpp" 来移动你的文件。它当然不会更新任何#include 语句,但可以省去手动修改 .pro 文件的麻烦。它还尊重“git rename”等...
【讨论】:
谢谢,效果很好。不如能够拖放那么好,但它可以工作。 不适用于目录... Qt Creator 缺少很多基本的 IDE 功能... @Sebastian 恕我直言,重命名目录是一个文件管理器功能,真的。 IDE 擅长显示、修改和调试代码。 @rubenvb 我希望#include
s 和 .pro 文件会在文件重命名期间自动更新,但我想我已经习惯了 Java 和 eclipse 的世界,#import
s 会在包更改时自动更新。
这确实不起作用(我尝试使用斜杠、反斜杠等)。我得到“尝试使用另一个名称,字符更少或没有标点符号”。除了点...【参考方案2】:
我认为那是不可能的,在没有 ide 支持的情况下移动文件是一件很痛苦的事情……:/
【讨论】:
以上是关于Qt creator中使用.ui文件的问题的主要内容,如果未能解决你的问题,请参考以下文章