将枚举类型转换为字符串
- 这里使用的在网络编程中,获取socket状态并显示的时候,遇到的一个问题
cpp
#include <QMetaEnum>
// 将枚举类型转换为字符串
QMetaEnum metaEnum = QMetaEnum::fromType<QAbstractSocket::SocketState>();
const char *c_str = metaEnum.valueToKey(socketState);
QString str = QString(c_str);
使用事件过滤器实现,点击lineEdit,按下回车,调用btn的点击槽函数
cpp
// 首先为lineEdit安装事件过滤器
ui->lineEdit->installEventFilter(this);
// 事件过滤器函数
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
// 判断当前对象是否是lineEdit,并且判断是否是键盘事件
if (obj == ui->lineEdit && event->type() == QEvent::KeyPress)
{
// 静态转换
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
// 判断是否是enter键,这里还有个key_Return
if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return)
{
// 调用点击槽函数
ui->btnSendMsg->click();
return true; // 拦截事件,不再传递给editMessage
}
}
return QObject::eventFilter(obj, event);
}
设置插入到QplainTextEdit中的文字样式
cpp
void MainWindow::InsertPlantText(QString text, int fontSize, QColor fontColor, QColor backColor)
{
// 先保存当前的字符格式
QTextCharFormat originFmt = ui->plainTextEdit->currentCharFormat();
// 设置新的字符格式
QTextCharFormat fmt;
// 设置字体大小
fmt.setFontPointSize(fontSize);
// 设置字体色
fmt.setForeground(QBrush(fontColor));
// 设置背景色
fmt.setBackground(QBrush(backColor));
// 设置文本框格式
ui->plainTextEdit->mergeCurrentCharFormat(fmt);
//文本框添加文本
ui->plainTextEdit->appendPlainText(text);
// 设置回之前的字符格式
ui->plainTextEdit->setCurrentCharFormat(originFmt);
}
设置图标
- 设置运行后,左上角和下面任务栏的图标
cpp
// 设置图标
this->setWindowIcon(QIcon(":/images/wx.ico")); // "xxx"中填路径
- 设置exe文件的图标
cpp
// 在xxx.pro中添加 - 注意这里要填wx.ico对于xxx.pro的相对路径
RC_ICONS += wx.ico
网络编程
获取本机IP地址
cpp
QString getLocalIP()
{
// 获取本机主机名
QString hostName = QHostInfo::localHostName();
// 根据主机名获取主机信息
QHostInfo hostInfo = QHostInfo::fromName(hostName);
// 通过主机信息获取主机地址列表
QList<QHostAddress> addrList = hostInfo.addresses();
// 定义一个字符串用于存放主机IP
QString localIp = "";
if(!addrList.isEmpty())
{
// 遍历addrList
for(int i = 0; i < addrList.count(); i++)
{
QHostAddress addr = addrList.at(i);
// 判断如果是IPV4地址,就加到localIp字符串中
if(addr.protocol() == QAbstractSocket::IPv4Protocol)
{
localIp += addr.toString() + " ";
}
}
}
return localIp;
}