Qt creator中使用.ui文件的问题
我在Qtcreator中新建了一个gotocell.ui文件并且也生成了ui_gotocell.h文件ui_gotocell.h文件内容如下(...处表示省略了):现在使...
我在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,真心求解答!谢谢! 展开
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,真心求解答!谢谢! 展开
2个回答
2013-04-14
展开全部
第一,你这多继承看着很违和,为啥还要声明一个私有的ui啊?
第一个错误是:在函数声明和实现的签名中两次使用默认值,这个算是编译器的警告,而算不上是错误除非是严格警告(把所有的警告当做错误对待)。
第二个就是setupUI的问题了,这个你设计其中选择的是dialog,但是你多继承的时候用的是qwidget……把父类转换成为子类是无法通过隐式转换完成的,需要使用dynamic_cast或者强制类型转换变成一个子类对象,不过我认为dynamic_cast会返回空,因为这种转换时不安全的。
综上,两个错误和Qt没一毛钱的关系,都是C++最基本的问题。
第一个错误是:在函数声明和实现的签名中两次使用默认值,这个算是编译器的警告,而算不上是错误除非是严格警告(把所有的警告当做错误对待)。
第二个就是setupUI的问题了,这个你设计其中选择的是dialog,但是你多继承的时候用的是qwidget……把父类转换成为子类是无法通过隐式转换完成的,需要使用dynamic_cast或者强制类型转换变成一个子类对象,不过我认为dynamic_cast会返回空,因为这种转换时不安全的。
综上,两个错误和Qt没一毛钱的关系,都是C++最基本的问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询