最近在开发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下的所有文件。
构造函数里添加代码:
继续阅读 »
程序退出的几种方法
首先看函数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来保存打开的文件的路径
继续阅读 »
事件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。
继续阅读 »
近期评论