[C/C++][界面][Qt]windows底下实现第一个Qt界面编程的demo[1]

来源:互联网 发布:万网 域名维护费用 编辑:程序博客网 时间:2024/05/01 14:34


                                                                                                  KILLU

 

      前一阵子耍了一下wxWidgets和GTK+,当然我都是在windows底下的VS2008平台上写程序的。当初曾想如果界面的每行代码都是自己写出来的,会不会很有成就感呢?现在有答案了:成就感是有,可是写个界面花的时间太多了,得不偿失啊。也可能新手的缘故,新东西用起来都还很木。
 
      wxWidgets在windows底下是原生的,默认界面就比较好看。他的代码是C++的,每个组件(就是按钮、输入框这些东西)都是用类来表达的,还有一堆必不可少的宏,特别是用来连接事件。不知怎的,刚用的时候看wxWidgets的demo的代码就是觉得乱啊,可能受当时心情的影响。玩了一下就转去GTK+了,GTK+都是用C实现的,少了类啊宏啊的,看起来是清晰多了,就这样用了一阵子,写了几个程序。但是到了要美化的时候,又犯愁了,网上说的基本上通过改gtkrc文件来设置字体颜色等的,可我怎么弄都不出效果,也没看到在windows底下是怎么弄的,都有跑去Ubuntu上弄的冲动了。实在无法忍受难看的界面和考虑到不该在界面上花太多时间,再加上不想用MKC,我再次考虑Qt。之前因为Qt的版权好像有一点限制,没有考虑,现在想想算了,好东西还是要学学,反正我现在也不用考虑什么商业化的,好用就行。
 
      还有一个用Qt的原因是:我想回到过去用拖拉组件的方式做窗口的年代(C++ Builder我编程入门使用的平台,本科),因为这样的确直观方便省时间(为了美观,我常常会花很多时间去调整布局和组件属性,太爱美也不好是吧,^_^)。好,Qt提供了一个很好的专门设计窗口的工具Qt Designer,于是我就开始享受它的功能了。
 
      参照这本《C++ GUI Promgramming with Qt 4》电子书(后简称《Qt4》)开始了我的第一个demo。
 
      有时候完全按照书上说的不一定能得到想要,再说系统或平台不一样的话就更难预料了。
      书上的Hello Qt就不多说了,直接放个代码。
 
1 #include <QApplication>
2 #include <QLabel>
3 int main(int argc, char *argv[])
4 {
5     QApplication app(argc, argv);
6     QLabel *label = new QLabel("<h2><i>Hello</i> ""<font color=red>Qt!</font></h2>");
7    label->show();
8     return app.exec();
9 }

 

      类似<h2></h2>的这些东西是设置它们之间字符的字体和颜色的。输出如下:

 

 

      接下来我就直接开始用Qt Designer了。
      照着书上的做,很快就是设计好了一个dialog界面。Qt Designer预览如下:
 


      设计好后保存文件到工程目录底下,取名gotocelldialog.ui。我用cmake建了一个Qt_test的工程,加上刚才的这个文件,目前就有三个文件了:CMakeList.txt、gotocelldialog.ui和main.cxx,main.cxx还是空的。
 
      gotocelldialog.ui文件在我们VS2008建的工程里是不能直接使用的,首先要用它生成h文件。windows底下的过程如下:
 
      1. 运行CMD,把当前目录移到工程目录底下;
      2. 输入uic gotocelldialog.ui -o ui_gotocelldialog.h回车产生ui_gotocelldialog.h文件。当然如果不写-o ui_gotocelldialog.h它是不会产生h文件的,只是在CMD里显示一下。

      windows下就这么简单,《Qt4》上的qmake操作在这里是不需要的。

      现在用cmake编译一下,将main.cxx和ui_gotocelldialog.h加入工程,main.cxx加入代码如下:

 

1 #include <QApplication>
2 #include <QDialog>
3 #include "ui_gotocelldialog.h"
4 int main(int argc, char *argv[])
5 {
6     QApplication app(argc, argv);
7     Ui::GoToCellDialog ui;
8     QDialog *dialog = new QDialog;
9     ui.setupUi(dialog);
10    dialog->show();
11    return app.exec();
12 }

 

      编译通过,运行,显示窗口如下:
 


      是不是跟前面Qt Designer预览的一样,只是主窗口logo不一样了!

      这里就先讲这么多,其实还有很多事情要干呢,还没给窗口加事件功能呢。。。。。。