qt 编程经验总结

  • 格式:doc
  • 大小:199.00 KB
  • 文档页数:18

数据模型更改时,QlistView如何相应的刷新 .............................................................................. 3

QlistView 控件如何关联数据模型................................................................................................. 3

QT中QstringList的清空 ................................................................................................................ 4

QT中的pro文件的编写 ................................................................................................................. 4

QProgressDialog的使用方法 ........................................................................................................ 10

如何添加自定义的slot 函数。 .................................................................................................... 11

Qt标准对话框之QMessageBox ................................................................................................... 12

Qt 中如何使用外部链接库 ........................................................................................................... 16

如何将qte 默认的绿色背景设置为透明 ..................................................................................... 16

布局的时候设置左,上,右,下的距离 ..................................................................................... 16

如何加载图片 ................................................................................................................................. 17

在Qt4中如何为对话框设置背景? ............................................................................................. 17

使用qmake工具构建QT应用程序(指定编绎生成 的moc文件目录)

moc命令:用于处理含Q_OBJECT语句(即用到时了信号和槽)的QT类定义头文件(或源文件),以产生出包含QT元对象代码的标准头文件,这样经过处理后的头文件才能在源文件中使用。注意若用qmake工具来构建QT程序,可以设置规则来自动运行moc,无需我们直接运行moc来处理头文件

qmake是一个跨平台的程序,使用qmake来构建QT应用程序的步骤:

qmake -project:收集项目信息,比如源文件、头文件、目标二进制文件、库位置等,生成一个跨平台的.pro项目文件(也可自己编写),这个文件用来生成Makefile文件

qmake(-makefile):根据.pro文件生成Makefile文件。接下来就可以运行make工具来编译项目了

.pro文件的格式:

TEMPLATE=app:指定模板变量,表示生成的Makefile类型。app(为默认值)建立应用程序的makefile;lib建立库的makefile;vcapp建立应用程序的Visual

Studio项目文件;vclib建立库的Visual Studio项目文件;subdirs创建子目录编译方式的makefile

SUBDIRS=src1:指定子目录

TARGET=filename:指定生成的应用程序名(默认为项目名)

DEPENDPATH+=.:指定程序编译时依赖的相关路径(+=表示追加,=则表示直接指定,下面类同)

INCLUDEPATH+=.:指定头文件包含路径

DESTDIR+=bin:指定应用程序放置的目录

UI_DIR+=form:指定ui界面文件生成的头文件存放目录(ui文件会由uic命令处理并生成ui_*.h头文件)

RCC_DIR+=qrc:指定qrc资源文件生成的头文件存放目录(rcc命令会将.qrc文件转换成qrc_*.h文件)

MOC_DIR+=moc:指定moc生成的头文件存放目录(moc命令将含Q_OBJECT的头文件转换成标准.h文件)

OBJECTS_DIR+=obj:指定目标文件存放的目录

CONFIG+=qt warn_on release:指定编译配置信息,如qt表示用QT库来编译,warn_on把编译器设为输出警告信息,release编译为发布程序,还有debug、debug_and_release等

message($$(PATH)):用于qmake构建时产生消息。$${a}表示读取变量a的字符串,$$(PATH)读取环境变量PATH

win32{ }:添加作用域,把语句放在作用域中,则在其他平台上运行时会忽略

exit():测试一个文件是否存在

error():停止运行qmake,并打印一条错误消息

HEADERS+=hello.h:指定头文件

SOURCES+=filename.cpp:指定源文件

FORMS+=form/filename.ui:指定.ui界面设计文件

RESOURCES+=qrc/painter.qrc:指定.qrc资源文件

数据模型更改时,QlistView如何相应的刷新

int SearchDevicePage::addDeviceIpStrToQListViewWidget(char *ipaddr_string)

{

printf("addDeviceIpStrToQListViewWidget ipaddr_string(%s)\n", ipaddr_string);

return_val_if_failed(ipaddr_string != NULL, RET_INVALID_PARAMETER);

deviceIpStringList->append(ipaddr_string);

deviceModel->setStringList(*deviceIpStringList);

ui.listView_device->setModel(deviceModel);

return 0;

}

QlistView 控件如何关联数据模型

QListView是基于Model,而QListWidget是基于Item。这是它们的本质区别。

往QListView中添加条目需借助QAbstractListModel:

如:

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

QStringListModel* slm = new QStringListModel(this);

QStringList* sl = new QStringList();

sl->append("asdfsadfsa");

sl->append("asdfsadfsa");

sl->append("asdfsadfsa");

slm->setStringList(*sl);

ui->listView->setModel(slm);

delete sl;

}

而在QListWidget中添加条目可以直接additem

如:

QListWidget list;

list.setViewMode(QListWidget::IconMode );

list.setResizeMode(QListWidget::Adjust);

list.setMovement(QListWidget::Static);

for(int i =0; i < 100 ; i ++){

QListWidgetItem *item = new QListWidgetItem(&list);

QStyle::StandardPixmap sp = (QStyle::StandardPixmap)(i % 57);

item->setData(Qt::DecorationRole,

qApp->style()->standardPixmap(sp).scaled(QSize(16,16),

Qt::KeepAspectRatio, Qt::SmoothTransformation) );

item->setData(Qt::DisplayRole,QObject::tr("Item %1").arg(i));

}

QT中QstringList的清空

调用 Clear()函数。

QT中的pro文件的编写

我们在编译QT的工程的时候,一般都会让qmake自动生成,但有时我们需要定制我们的工程,那么就必须改写pro文件。

要自己全部写pro文件又有点麻烦,所以,一般都是先运行

qmake -project

来生成基本的pro文件。

例如你有一个工程目录为backup,那么在这个目录下就会生成backup.pro文件。