65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Qt 和 MSVC++ 进行跨平台应用程序开发 - 第一部分

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.24/5 (12投票s)

2005 年 6 月 4 日

CPOL

3分钟阅读

viewsIcon

40953

如何使用 MSVC++ 和 Qt 为 Windows、Linux 和 MacOS 开发程序

引言

我打算通过这篇文章开始一个系列,介绍使用 C++ 作为语言和 Qt 框架进行多平台软件开发。

我开发软件已经几年了,我总是尝试维护我的程序。 这不是一件容易的事,因为要完成这项任务,有必要确定哪些操作系统将被接受。

我通常使用一组更简单的系统(Windows、Linux 和 Palm OS),因此这项看起来容易的任务实际上很艰巨。

在本文中,我将介绍用于使用 Qt 库进行程序开发的工具。 我不会逃避“Hello world!”(设计师的苹果)的规则。

第一个程序

我将给出传统的“Hello World”示例,以便大家可以快速了解该库,以及传统的控制台程序。

//CODE: hello.cpp  
#include <qapplication.h> //QApplication  
#include <qlabel.h> / / QLabel  
  
int main(int argc, char * argv [])  
{  
   / / create the application object and initialize it.  
        QApplication app(argc, argv);  
   / / create the main object/widget required to receive message   
        QLabel * lbl = new QLabel ("Hello World! ", 0);  
   / / it defines the main object/widget  
        app.setMainWidget(lbl);  
   / / we need show it (required)  
        lbl->show ();  
   / / event loop (required)  
        return app.exec ();  
}    

但是要编译此代码,我们需要一个 makefile 来轻松构建可执行文件。 如果您使用的是 Qt-3.x 或更新版本,则可以使用 Qt 附带的自动生成器。

我想明确一点,前面的代码可以在三种不同的操作系统中运行,无需进行任何修改。 您只需使用适用于所需操作系统的编译器来编译代码即可。(Win=MSVC++; Linux=GCC; MacOS=CodeWarrior)。

在 DOS 提示符下,您应该按照完全相同的顺序执行以下命令

qmake - project - hello.pro  
qmake  
nmake    

第一个命令会将当前文件夹中的所有文件源连接起来,并创建一个项目文件。 第二个命令将创建构建可执行文件所需的 makefile。 您可以直接调用 *CL.EXE*,但使用 Qt 的生成器更快。 请参阅下面由 qmake 生成的项目文件内容

######################################################################  
# Automatically generated by qmake (1.06c) sáb 4. jun 18:50:03 2005  
###################################################################### TEMPLATE = app  
CONFIG -= moc  
INCLUDEPATH += .  
# Input  
SOURCES += Hello.cpp  

来自 Microsoft DOS 的经典 helloworld 是

#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("Hello world!\n");    
}

如果您使用的是 Microsoft Windows,那么您将拥有可以通过双击鼠标或通过 Microsoft-DOS 提示符运行的 *hello.exe* 文件。 如果使用的系统是 Linux,则只需通过提示符 ./hello 运行,或者通过使用中的 Windows 管理器双击即可。

如果您使用的是 MAC OS,我建议您咨询了解该系统的人(不是我......我从未使用过它)。

Qt 的组件将接受 HTML 文本,因此当您将“Hello World!”更改为 “<H1> Hello World! </ H1>”之类的东西时,您会感到惊讶。 这将会起作用。 但是您可以将标签更改为其他控件/小部件。 请参阅下面按钮的更改。

//CODE: hello.cpp  
#include <qapplication.h> //QApplication  
#include <qpushbutton.h> / / QPushButton
  
int main(int argc, char * argv [])  
{  
   // create the application object and initialize it.  
        QApplication app(argc, argv);  
   // create the main object/widget required to receive message   
        QPushButton * btn = new QPushButton("Hello World  and Quit! ", 0);  

  //new code to close on button click ;-)

  //We should connect the event Click () to the command Quit () of the application.    

    QObject::connect(btn, SIGNAL(clicked()), &app, SLOT(quit());

   // it defines the main object/widget  
        app.setMainWidget(btn);  
   // we need show it (required)  
        btn->show ();  
   // event loop (required)  
        return app.exec ();  
} 

您一定已经注意到前面的代码中命令 SLOT()SIGNAL() 是宏,稍后会进行解释。

我写这篇小文章是为了展示 Qt 的 1-2-3。 有一个 IDE 允许我们绘制屏幕 (AppWizard) 并直观地连接事件,并且很快我们就可以编写功能代码。 这将是下一篇文章的主题。

再见!

历史

  • 2005 年 6 月 4 日:首次发布
© . All rights reserved.