【旧博客迁移】原创]Qt基本编程

计划了好久想要写个入门教程的,今天才开始写。

环境搭建(以ubuntu12.04lts 为例)

$ sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
#include <QSqlDatabase>

需要用到mysql数据库需要执行下面命令安装(自带sqlite驱动),

$ sudo apt-get install libqt4-sql-mysql

来一个helloworld程序

$ mkdir -p helloworld/src helloworld/ui helloworld/build helloworld/bin
$ touch helloworld/src/main.cpp helloworld/src/mainwindowimpl.h helloworld/src/mainwindowimpl.cpp
helloworld
├── bin
│   └── helloworld
├── build
├── CMakeLists.txt
├── src
│   ├── main.cpp
│   ├── mainwindowimpl.cpp
│   └── mainwindowimpl.h
└── ui
    └── helloworld.ui
#include <QApplication>
#include "mainwindowimpl.h"

int main(int argc, char ** argv)
{
    QApplication app(argc, argv);
    MainWindowImpl win;
    win.show();
    app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );
    app.exec();

    return 0;
}
#ifndef MAINWINDOWIMPL_H
#define MAINWINDOWIMPL_H

#include <QDialog>
#include "ui_helloworld.h"

class MainWindowImpl : public QDialog, public Ui::Dialog
{
Q_OBJECT
public:
    MainWindowImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
    virtual ~MainWindowImpl() {};
};
#endif
#include "mainwindowimpl.h"

MainWindowImpl::MainWindowImpl( QWidget * parent, Qt::WFlags f)
: QDialog(parent, f)
{
    setupUi(this);
}
PROJECT(helloworld)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
FIND_PACKAGE(Qt4 REQUIRED)

#########################################
set(EXECUTABLE_OUTPUT_PATH ../bin)
set(LIBRARY_OUTPUT_PATH ../libs)

add_definitions (${QT_DEFINITIONS})

# 使用net模块
# set(QT_USE_QTNETWORK true)

## libs
link_directories(/usr/local/lib)
link_directories(/usr/lib)

## includes
include(${QT_USE_FILE})
# 包含文件夹:${CMAKE_CURRENT_BINARY_DIR}和${CMAKE_CURRENT_SOURCE_DIR}用于确保moc产生的文件能正确编译。
include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
include_directories(./src SRC_DIR)

## sources
aux_source_directory(./src SRC_DIR)

# 对于含有Q_OBJECT一类宏的代码(主要是头文件),需要列出以备交给moc处理
set(qt_HDRS ./src/mainwindowimpl.h)

# UI文件
set(qt_UI ./ui/helloworld.ui)

## QT
qt4_wrap_cpp(qt_MOCS ${qt_HDRS})
qt4_wrap_ui(qt_UIS ${qt_UI})

## apps
add_executable(helloworld
    ${SRC_DIR}
    ${qt_MOCS}
    ${qt_UIS}
)

## link libs
target_link_libraries(helloworld ${QT_LIBRARIES})
$ cmake ..
$ make
$ ../bin/helloworld

使用qt助手

  • 我需要知道文本框QLineEdit:的属性
  • 在qt助手中搜索edit,找到QLineEidt,然后就可以查看方法和属性了
  • 比如我想修改文本框大小,我会按Ctrl+F搜素size
  • 就这样,一步一步的实现
  • 同样的,更快的方法是使用google。一般google不到的东西就只有使用自带的qt助手了。

后记

因为我个人不需要深入学习qt,只是用来实现一个客户端。客户端可以是多种多样的,如web实现客户端。所以不要在客户端花过多的时间,不过基本的东西还是要好好学习的。只要深入学习了一种,其他的都会很类似的。

点击进入评论 ...