首页 › 分类存档 › QT

libevent for qt网络模块,直接替换qt的select模型,支持epoll,select,pool.使用非常简单,无需修改以前的代码结构

最近在开发im服务器,需要大并发链接。QT默认的是使用select模型的,这种轮询方式非常慢。在高并发连接,我们需要epoll才能发挥linux服务器的性能.而且使用简单,整个服务端代码架构无需修改,设置QT的分发事件就可以使用了,只要在main里面添加 :

继续阅读 »

QT产生随机数和定时器

1、利用事件来定时
void timerEvent(QTimerEvent *);  系统事件槽

1.新建Gui工程,工程名可以设置为timer。并在主界面上添加一个标签label,并设置其显示内容为“0000-00-00 00:00:00 星期日”。
2.在mainwindow.h中添加槽函数声明。
private slots:
void timerUpDate();
3.在mainwindow.cpp中添加代码。
添加#include <QtCore>的头文件包含,这样就包含了QtCore下的所有文件。
构造函数里添加代码:
继续阅读 »

在socket中发送中文的方法

QT中封装的socket类有QUdpSocket 和QTcpSocket,但是发送和接受的函数

都是char类型的,而从文本中获取的数据是QString,如果是英文,一个字符占一个字节,直接用QByteArray  中的append方法即可

但是如果是中文,仅仅append,是不行的,QString.append(QByteArray)显示的话中文是乱码

需要在发送和接受的过程进行处理

发送时候,要发送的文本时QString str;

接收端

此时str中保存的就是中文

程序退出的几种方法

首先看函数QApplication::setQuitOnLastWindowClosed(bool) ,该函数的作用是
This property holds whether the application implicitly quits when the last window is closed.
The default is true

即控制着当最后一个可视的窗口退出时候,程序是否退出,默认是是的
如果使用app.setQuitOnLastWindowClosed(false);然后当该出窗口close以后,ps -e查看,我们发现应用程序仍旧在运行中

所以当此时,如果所有的窗口都响应了close(),那么application就退出了,

如果窗口关闭,就返回TRUE,否则返回FALSE
继续阅读 »

QComboBox用法小结

fromComboBox = QComboBox() 添加一个 combobox
fromComboBox.addItem(rates) 添加一个下拉选项
fromComboBox.addItems([“%d years” % x for x in range(2, 26)]) 从序列中添加
fromComboBox.setMaxVisibleItems(10) #设置最大显示下列项 超过要使用滚动条拖拉
fromComboBox.setMaxCount(5) #设置最大下拉项 超过将不显示
fromComboBox.setInsertPolicy(QComboBox.InsertAfterCurrent) #设置插入方式
继续阅读 »

QFileDialog的用法

Qt中 文件对话框QFileDialog 的使用
资料来源于Qt官方文档,我总结了其中常用到的部分:

一. 最简单的方法是调用静态函数来对话框获取文件:

这断代码可以建立一个取文件对话框,选择后OK将文件路径返回给file.
可以一次性打开多个文件,使用QStringList来保存打开的文件的路径
继续阅读 »

消去window的最大化和最小化按钮

同样可以使用

来为窗口添加上最大化和最小化按钮

事件Qevent的接受和忽略 和重定义 事件过滤器

事件处理流程:
某个事件发生——>exec()循环会接收到这个事件——>

创建一个事件对象,并将对象传递给QObject::event()——>

在QWidget::event()函数中,分配给特定的事件处理函数——>

在QButton的事件处理函数中emit(clicked消息)
继续阅读 »

QT事件过滤器

Qt事件模型一个真正强大的特色是一个QObject 的实例能够管理另一个QObject 实例的事件。

让我们试着设想已经有了一个CustomerInfoDialog的小部件。CustomerInfoDialog 包含一系列QLineEdit. 现在,我们想用空格键来代替Tab,使焦点在这些QLineEdit间切换。
继续阅读 »

QT 创建鼠标右键菜单

QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数:
Qt::ContextMenuPolicy contextMenuPolicy () const
void setContextMenuPolicy ( Qt::ContextMenuPolicy policy )

Qt::ContextMenuPolicy枚举类型包括:Qt::DefaultContextMenu, Qt::NoContextMenu, Qt::PreventContextMenu, Qt::ActionsContextMenu, and Qt::CustomContextMenu。
继续阅读 »