• 7509阅读
  • 5回复

【原创】编写一个最有代表意义的qt程序(原创)--->为初学者而写 [复制链接]

上一主题 下一主题
离线zeckey
 

只看楼主 倒序阅读 楼主  发表于: 2006-02-11
【原创】编写一个最有代表意义的qt程序(原创)--->为初学者而写
编写一个最有代表意义的qt程序(原创)

假设您一切都安装好了.现在我们打开 QT Designer 吧. 打开後,选择 New -> Dialog
这时侯,您的 QT Designer 中就会出现一个 From1 来.
更改右下角那个窗口里的 caption ,原内容 "Form1"改为 "一个小计算",
              name   , 原内容 "Form1"改为 "form_main"
现在我们 click 一下上面的 tools 中的那个 pushbutton, (标有 OK 的图标)
并且用 mouse 选择到一定的大小. 在这个 pushbutton
上面用您的 mouse double click 一下. 我们就可以改变 pushbutton 的 label 了. 这里我们把
pushbutton1 这几个字,换成 “计算”, 然後直接按 Enter 或者用 mouse 选择 OK 也可以. 现在我们
看到, 那个 button 中的标签已将变成 “计算” 了.
更改右下角那个窗口里的 name   , 原内容 "pushButton"改为 "pBtn_calculate"

同样拉个pushbutton到窗口上,改pushbutton1 为 Close , 改右下角那个窗口里的 name为 pBtn_Close

同样拉个textLabel到窗口上 ,
更改右下角那个窗口里的 name 内容 , 原内容 "textLabel1"改为 "txLbl_expression"
                text 内容, 原内容 "textLabel1"改为 "56+89",    

同样拉个lineEdit到窗口上 ,
更改右下角那个窗口里的 name 内容 , 原内容 "lineEdit1"改为 "lEdt_result"

       

我们这时侯还需要给这个 Close Button 一个
signal(信号), 这样当您在 Close 这个 Button 上 click 的时侯. QT 才知道如何去处理这个信
号. 我们按一下 F3(connect singnal slot)然後在那个 Close Button 上面 Click 一下. 这时
侯我们就看到了 Close Connection 的 Dialog 了. 在 Signal 中选择 clicked, 在 slot 中,先选
择 close() 就好了,在 Reciever 中选择 form_main. 这时侯选择 OK.

我们这时侯还需要给这个 “计算” Button 一个
signal(信号), 这样当您在 “计算” 这个 Button 上 click 的时侯. QT 才知道如何去处理这个信
号.由主菜单 Edit->Slots 打开 Edit Function 窗口可以新建新的函数,如 void func1()
点击 New Function 按钮,将newSlot()改为func1(); 然后选择 OK。
我们按一下 F3(connect singnal slot)然後在那个 “计算” Button 上面 Click 一下. 这时
侯我们就看到了 View and Edit Connection 的 Dialog 了. 在 Signal 中选择 clicked, 在 slot 中,先选
择 func1() 就好了,在 Reciever 中选择 form_main. 这时侯选择 OK.

我们就算是基本完成了. 如果想看看这个小程式长什麽样子.
可以用 CTRL+T来看 PreView.

下一步在您的 /root 中建立一个 test 的 Directory 出来. 这个 Directory 将会
作为我们存放文件的地方. 现在我们用 File -> Save 把这个文件存为 form_main.ui 放在 /root/test
的目录下.现在如果大家打开 form_main.ui 来看一看. 会发现那是一堆有很多的东西.



这时侯我们只需要写一个小的main.cpp就可以编译form_main.cpp (这个文件等下会自动生成)了.
main.cpp非常的简单,如下
运行
# gedit &

#include "form_main.h"
#include <qapplication.h>

int main(int argc, char **argv)
{

    QApplication app(argc, argv, "form_main");

    form_main *form1=new form_main();
    form1->show();
    app.setMainWidget(form1);
    return(app.exec());
}

编写完后保存到/root/test 中命名为 main.cpp
# cd /root/test/
# qmake -project
# qmake
# make

再打开 /root/test/ 可以发现多了一下文件
form_main.cpp form_main.ui Makefile       test
form_main.h   main.cpp     moc_form_main.cpp test.pro
form_main.o   main.o     moc_form_main.o

那个test文件就是可执行文件

# ./test
至此第一个简单的程序雏形就编写完成拉。

再打开form_main.cpp
在 void form_main::func1()中添加
  txLbl_expression->setText(tr("56+89=145"));
  lTx_result     ->setText(tr("56+89=145"));
保存,再来编译一次
# cd /root/test/
# qmake -project
# qmake
# make
如果没有错误,运行
# ./test

看看效果怎么样? 点击上面的按钮看看, 很High吧。。。。。。[p:5]
离线sunxiaoming
只看该作者 1楼 发表于: 2006-03-08
form_main.cpp
form_main.h

这两个文件是执行了什么命令后生成的啊
我没有欧
我用的是qt-x11-2.3.2的 ????
离线gytao_tx

只看该作者 2楼 发表于: 2006-03-20
你用UIC命令就可生成.CPP和.H的文件
离线yangbojie
只看该作者 3楼 发表于: 2008-06-27
很好,谢谢。
lTx_result    ->setText(tr("56+89=145"));有错。lTx_result 名字改下吧
离线foxyz

只看该作者 4楼 发表于: 2008-06-27
值得鼓励,不过问题不少;
首先,你designer出来的*.ui是用来生成ui_xxx.h文件的,不是用来生成*.cpp的
至于怎么由*.ui生成*.h,有两种方法:
              1、在*.pro文件中加FORMS部分,这样qmake会自动产生
              2、使用uic工具手工产生。
至于需要自动产生的*.cpp文件一般是由于某些*.h文件里有宏Q_OBJECT(自定义的slots)这时候会产生moc_XX.cpp文件
这个同上,可以由qmake自动产生,也可以用moc工具。
    同样的文件还有*.qrc的资源文件,,就不细说了。
你如果需要使用designer出来的QDialog,或者QWidget,或者...
那么有以下两种基本方法:
    1、通过继承,例子如下:
    class myDialog : public QDialog, private Ui::designedDialog
        {
            ...
        }
        这里class Ui::designedDialog就是来自头文件ui_XXX.h也就是根据*.ui文件自动生成的头文件
    然后myDialog dlg;
        dlg.show();
              dlg.exec();
    2.组合
    class myDialog : public QDialog
      {
            ....
            private:
                Ui::designedDialog  m_ui;
        }
       
      myDialog dlg;
      dlg.show();
      dlg.exec();
      还要注意的是:两种方法的构造函数写法
  一个是setupUi(this);
    一个是m_ui.setupUi(this);
     
离线浪漫天使
只看该作者 5楼 发表于: 2008-06-27
#include <qapplication.h>
qt2 和qt3的玩法

首先,你designer出来的*.ui是用来生成ui_xxx.h文件的,不是用来生成*.cpp的
qt4的玩法,

不同的版本游戏规则不同的,好玩吧。。。。
快速回复
限100 字节
 
上一个 下一个