Can I use qtcreator for making GUI on C?

3

我在大学第一学期有一个项目。我已经写了一个C源代码文件,但是我想为我的项目创建一个图形用户界面(GUI)。使用QT creator可以实现吗?


这不是一个适合在SO上提问的问题。话虽如此,当然你可以!它是一个非常好的IDE,你可以轻松地使用cmake、qmake或qbs项目,并且如果你不知道这意味着什么(抱歉这么说),你不应该编写任何c gui应用程序。 - Iharob Al Asimi
@iharob 为了C++,你可以将它QT化,虽然你可以通过extern "c"指令引入一些c代码,但你无法与QT类交互。我建议Osama切换到GTK。 - milevyo
尝试为您的C代码编写DLL接口。 - Collins Abitekaniza
请停止!!!Y使用cmake开发了一个xfce4面板插件,采用了qt技术,它非常完美!只有极少数的东西看起来不太对,例如可变参数函数和其他一些问题,但由于c++试图与c语言相似,许多事情可以正确地工作。另一个问题是有时它会自动删除“结构体”。 - Iharob Al Asimi
@OsamaArif,不是QT,而是QtQt与qtcreator不同。Qt是一个C++库,具有非常广泛的类和函数,使跨平台开发变得非常容易,而qtcreator是一个IDE。您可以在C++程序中使用C函数,只需要告诉编译器不要使用extern "C"来混淆它们的名称。 - Iharob Al Asimi
4个回答

2
你似乎有些混淆了。
这不是QT1,而是Qt,其中 t 是小写的。qtcreator也不是指的是 Qt
您可以不使用qtcreator或qmake,编写Qt应用程序,事实上,我有一个大型的Qt应用程序,它使用cmake作为构建系统,而且您知道KDE也使用cmake(其中包括automoc,它最初是KDE源代码的一部分)。此外,您可以在C++中使用C库,事实上,您几乎可以在任何地方使用C库,而与之不同的是,您不能在C++中使用C++库。
在C++代码中使用C函数的一个复杂问题是,C++会更改函数的名称以允许函数/方法重载(尽管方法对于C来说不相关)。但即使如此,您甚至可以通过编写“C”2函数来创建C++类的插件接口,以创建和销毁类的实例。
为了避免名称混淆问题,有一个“extern "C"”选项,例如,假设您在头文件“function.h”中有一个C函数。
void c_function(void);

如果您想在 C++ 代码中使用它,可以这样做:
extern "C" {
#    include "function.h"
}

现在你可以从C++代码中调用 c_function()。
结论:
- 你可以编写一个Qt图形用户界面并在其中使用你的C代码,这不需要任何特殊的东西,只需要使用extern "C"即可。 - 你可以使用qtcreator编写C(可能是gtk)图形用户界面,它们的协作非常好。在这种情况下,我建议使用cmake作为构建系统,虽然原则上qmake也可以胜任。 - 你可以使用PyGTKPyQt甚至Python's TkInter来编写图形用户界面,因为你可以从C代码创建一个模块。

1QT实际上代表QuickTime。

2它不是真正的C函数,因为您需要能够使用new运算符来创建类的实例,所以它实际上是一个使用extern "C"声明的C++函数,以避免名称混淆。

3在没有qtcreator之前,有Qt和KDE 3使用Qt而没有cmake,只有autotools。


0
不,要创建 GUI 项目必须使用 C++ 代码。

你可以使用Qt Creator完美地编写任何类型的C代码,包括但不限于GTK GUI应用程序,并且它非常适用于此。 - Iharob Al Asimi

0

Qt不是C语言,但你可以使用它。

选项1 这并不意味着你必须更改你的C源文件。只需编写一个dll接口,提供给C层一个API即可。

选项2 而且由于C与C++有些相关,我想添加面向对象的特性到你的代码中也很容易,因此不会改变你的代码逻辑,使其保持原样。


正好相反,最早是C语言,然后C++试图模仿它。 - Iharob Al Asimi

-2

这是来自Qt网站的“Hello World”教程,它使用C++编写,现在@iharob接受将其翻译成“C”的挑战。欢迎任何其他改进使其更具指导性的建议。

/****************************************************************
**
** Qt tutorial 1
**
****************************************************************/

#include <qapplication.h>
#include <qpushbutton.h>


int main( int argc, char **argv )
{
    QApplication a( argc, argv );

    QPushButton hello( "Hello world!", 0 );
    hello.resize( 100, 30 );

    a.setMainWidget( &hello );
    hello.show();
    return a.exec();
}

1
@iharob 这个怎么翻译成C语言? - milevyo
我在哪里说过我有将垃圾转化为诗歌的能力? - Iharob Al Asimi
这是我答案中承诺的A c gtk+项目,使用qtcreator创建 - Iharob Al Asimi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接