Qt 常用功能指南
部件常用功能
对象/组件 属性 描述 接口 备注
QWidget windowTitle 描述部件的窗口标题 QString windowTitle() const;
void setWindowTitle(const QString &);
size 描述部件的大小(不包含框架) QSize size() const;
void resize(int h, int w);
enabled 描述部件的可用性 bool isEnabled() const;
void setEnabled(bool);
visible 描述部件的可见性 bool isVisible() const;
void setVisible(bool);
QAbstractButton checkable 描述部件能否被选中 bool isCheckable() const;
void setCheckable(bool); 槽 click 使用的最多
checked 描述部件是否被选中 bool isChecked() const;
void setChecked(bool);
shortcut 描述按钮助记符 QKeySequence shortcut() const;
void setShortcut(const QKeySequence &);
text 描述按钮上显示的文本 QString text() const;
void setText(const QString &);
QPushButton QPushButton 使用的基本上是继承自父类的方法,需要注意的是有一个 QMenu *menu(); 的成员函数,能够获取设置在按钮上菜单。
QRadioButton 单选按钮,知道获取选中状态(isChecked)的方法就好了。
QCheckBox tristate 描述按钮是否为三态按钮 bool isTristate() const;
void setTristate(bool) 普通的选中的用法与单选按钮是一样的。
QLIstWidget count 描述列表中项目的数量 int count() const; 列表部件常用操作:
添加列表项 void addItem(const Qstring &);
删除列表项 QListWidgetItem *takeItem(int);
设置选中项 void setCurrentRow(int);
void setCurrentItem(QListWidgetItem*);
获取当前项 QListWidgetItem *currentItem();
获取指定项
QListWidgetItem *item(int); 通过此函数,能够遍历列表
currentRow 描述当前项目是第几行 int currentRow() const;
void setCurrentRow();
sortingEnabled 描述列表能否进行排序 bool isSortingEnabled() const;
void setSortingEnabled();
QtableWidget columnCount 描述表格有多少列 int columnCount() const;
void setColumnCount(int); 使用步骤:
首先设置行数与列数setRowCount,setColumnCount,然后设置列头setHorizontalLabels,最后设置数据,setItem
排序 sortItems
过滤通过 findItems 与 setRowHidden 实现
rowCount 描述表格有多少行 int rowCount() const;
void setRowCount(int);
QGroupBox title 描述部件的标题文本 QString title() const;
void setTitle(const QString &);
QTabWidget tabShape 描述部件页签的形状 QTabWidget::TabShape tabShape() const;
void setTabShape(QTabWidget::TabShape);
movable 描述部件页签是否能够移动 bool isMovable() const;
void setMovable(bool);
QComboBox currentText 描述部件当前显示的文本 QString currentText() const;
void setCurrentText(const QString &);
QLineEdit text 描述当前显示的文本 QString text() const;
void setText(const QString &);
QTextEdit plainText 纯文本 QString toPlainText() const;
void setPlainText(const QString &);
html QString toHtml() const;
void setHtml(const QString &);
markdown QString toMarkdown(QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) const
void setMarkdown(const QString &);
QSpinBox minimum 描述旋转按钮设置的最小值 int minimum() const;
void setMinumum(int); QDoubleSpinBox 与 QSpinBox 是类似的用法
maximum 描述旋转按钮设置的最大值 int maximum() const;
void setMaximum(int);
value 描述旋转部件上的值 int value() const;
void setValue(int);
QPlainTextEdit plainText 纯文本 QString plainText() const;
void setPlainText(const QString &);
事件常用功能
事件处理顺序:事件过滤器——焦点部件event函数——焦点部件事件处理函数
事件类型 接口 常用操作
定时器事件 timerEvent(QTimerEvent ); 启动定时器startTimer
关闭定时器killTimer
窗口关闭事件 closeEvent(QCloseEvent); 接受关闭accept
不接受关闭 ignore
实例:文档关闭操作
鼠标事件 mouseDoubleClickEvent(QMouseEvent *); 实例:窗口点击标题栏使窗口最大化与正常化来回切换
mouseMoveEvent(QMouseEvent *); 获取鼠标位置void pos() const函数
设置鼠标路径跟踪void setMouseTracking(bool);
mousePressEvent(QMouseEvent *); 鼠标按压/点击事件
mouseReleaseEvent(QMouseEvent *); 鼠标释放事件
滚轮事件 wheelEvent(QWheelEvent *); 垂直滚轮转动的角度angleDalta() / 8;
编译指令
名称 变量 ·描述
TEMPLATE app,应用程序 生成项目时指定模板名称
lib,库
subdirs,在子目录中构建项目,子目录使用SUBDIRS指定
QT 添加或删除qt库
HEADERS 定义项目的头文件
SOURCES 定义项目的源文件
TARGET 指定生成的目标文件名
CONFIG 指定项目配置和编译器选项
FORMS 指定UI文件
DESTDIR 指定存放目标文件的路径
INCLUDEPATH 指定编译项目时应搜索的#include目录。插件项目中可能使用到。
影子构建:Qt 项目模式下有一个Shadow build勾选框,目的是将项目的源码与编译生成的文件分别存放。
Echo Plugin Example:这个例子展示了如何创建一个低级的Qt插件,大致分为三个步骤
- 创建插件接口
- 实现插件接口
- 加载插件
问题:target.path是什么意思?
之后的任务,对象模型与容器类,常用工具类,2D绘图,网络编程,进程和线程
2D绘图
对象/组件 接口 描述
QPainter void drawLine(const QPoint &, const QPoint &);
void drawPoint(const QPoint &);
void drawRect(int, int, int, int);
void drawRoundRect(int , int, int, int, qreal, qreal);
void setRenderHint(QPainter::RenderHint); 反走样/抗锯齿
void translate(qreal, qreal); 平移坐标系
void scale(qreal, qreal); 缩放坐标系
void rotate(qreal); 旋转坐标系
void save(); 保存画家状态
void restore(); 恢复画家状态
QPen
QBrush
QPixmap 使用方法相似,需要注意load函数与save函数。 主要用来在屏幕上显示图像
QImage 主要用来I/O处理,提供像素级别的访问
QBitmap 处理颜色深度为1的图像
QPicture 用来记录并重演QPainter命令
容器
对象/组件 接口 接口描述 组件描述
QByteArray [static] QByteArray QByteArray::fromHex(const QByteArray &hexEncoded); 返回一个以十六进制解码的字节数组(30->0)
[since 5.9] QByteArray QByteArray::toHex(char separator = ‘\0’) const; 返回字节数组的十六进制编码(30->33 30)
网络编程
QHostInfo
使用主机名查找IP地址,或使用IP地址查找主机名
[static] int QHostInfo::lookupHost(const QString &name, QObject *receiver, const char *member);
[static] QHostInfo QHostInfo::fromName(const QString &name);
QNetworkInterface
获取本机网络接口信息
[static] QList QNetworkInterface::allInterfaces();
[static] QList QNetworkInterface::allAddresses();
QString QNetworkInterface::hardwareAddress() const;
QUdpSocket,UDP数据传输,不可靠/数据报/无连接传输层协议
常用API接口
绑定IP地址与端口号
[virtual, since 5.0] bool QAbstractSocket::bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform);
[since 5.0] bool QAbstractSocket::bind(quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform);
[since 6.2] bool QAbstractSocket::bind(QHostAddress::SpecialAddress addr, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform);
绑定是为了接口来自其他主机的数据,如果只是发送数据,并不需要进行绑定。
发送数据
qint64 QUdpSocket::writeDatagram(const char *data, qint64 size, const QHostAddress &address, quint16 port);
[since 5.8] qint64 QUdpSocket::writeDatagram(const QNetworkDatagram &datagram);
qint64 QUdpSocket::writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port);
接收数据
qint64 QUdpSocket::readDatagram(char *data, qint64 maxSize, QHostAddress *address = nullptr, quint16 *port = nullptr);
[since 5.8] QNetworkDatagram QUdpSocket::receiveDatagram(qint64 maxSize = -1);
[signal] void QIODevice::readyRead();
bool QUdpSocket::hasPendingDatagrams() const;
qint64 QUdpSocket::pendingDatagramSize() const;
其他API
套接字不论什么时候都有一个状态,状态如果发生变化,会发送一个相关的信号。
套接字不论什么阶段发生错误,都会发送一个包含错误信息的信号。
错误状态的展示存在问题,问题解决了无法重置文本。(暂未解决)
从新看一遍没问题,关键是为什么重新看一遍,目的是什么,不重新看信不信,看完过后确定就可以吗?我需要个理由。
以不同的编码方式发送数据会有什么问题?
对常用的ASCll表常用的知识学习记忆。
发送数据123,为什么得到的是313233
界面IP地址与端口号使用配置文件存储(QSetting)
重新启动软件与前一次启动软件所处的位置相同