将窗口设为提示框
1 | Qt::ToolTip |
Qt 数据库连接池
1 |
|
Qt随机数
1 | qDebug()<<QRandomGenerator::global()->bounded(10); //生成一个0和10之间的整数 |
Qt 监听鼠标点击事件
重写 mousePressEvent 方法
1 | void SystemSet::mousePressEvent(QMouseEvent *event) { |
Qt关闭所有页面
1 | QList<QWidget *> topLevelWidgets = QApplication::topLevelWidgets(); |
QT实现关机
要在Qt中实现关机功能,你需要使用操作系统提供的相关函数或命令来执行关机操作。由于不同操作系统之间的关机方式可能有所不同,下面我将为你提供针对不同操作系统的示例代码。
-
Windows系统
1
2
3
4
5
6
7
void shutdownWindows()
{
QProcess::startDetached("shutdown -s -t 0");
}也可使用下面方法
1
system("shutdown -s -t 00");
-
macOS系统
1
2
3
4
5
6
7
void shutdownMac()
{
QProcess::startDetached("sudo shutdown -h now");
}请注意,macOS系统需要使用sudo权限来执行关机操作。
-
Linux系统
1
2
3
4
5
6
7
void shutdownLinux()
{
QProcess::startDetached("sudo poweroff");
}同样地,Linux系统也需要使用sudo权限来执行关机操作。
这些示例代码使用了Qt的QProcess类来启动外部进程执行关机命令。你可以根据自己的需求将其集成到你的Qt应用程序中的适当位置,并通过调用相应的函数来触发关机操作。
请注意,执行关机操作需要相应的权限,因此在某些情况下,用户可能需要提供管理员权限或确认密码才能成功执行关机命令。
Windows,关机,重启,注销,命令
使用函数system();
关机指令。(shutdown -s -t xx)
重启指令。(shutdown -r -t xx)
注销指令。(shutdown -l -t xx)
标准格式。(shutdown -s -t xx)
t xx是关机延时时间 /秒;xx可以是00,直接关机。
可能输入00后,windows提示n分钟后关机,但关机时间实际是设定的时间。
qt-5/stylesheet-reference中翻译过来的所有伪状态
有用的选择器类型
QTableView的基本属性
TableView 的基本使用
-
添加数据
1
2
3
4
5
6
7
8
9QStandardItemModel* model = new QStandardItemModel(this);
model->setHorizontalHeaderLabels(userHeader);//添加表头 userHeader={"序号", "用户名", "姓名", "手机号", "角色", "状态", "创建时间"}
model->setRowCount(10); //列数
ui->TableView->setModel(model);
QStandardItem *pItem = new QStandardItem("正常");
pItem->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);// 居中显示
pItem->setData("1"); //例如,state=1 为正常 state=0 为禁用 页面显示为正常/禁用,则state的真实值可设置在这里
model->setItem(0, 5, pItem);//将pItem设置在第0行5列 -
获取QStandardItem中的data数据
1
model->item(0, 5)->data().toInt();//toInt() 是数据转换,也可转为其他数据类型,根据设置的参数数据类型
Qt Qss的使用
参考文章:https://www.cnblogs.com/onefish51/p/9378290.html
Qt QscrollArea滚动条样式修改
1 | QScrollBar:vertical { |
QString 删除最后一个字节
在C++中,可以使用QString
的chop()
函数来删除最后一个字节。这个函数会将字符串的长度减小一个字节,并且移除最后一个字符。
以下是一个示例代码:
1 | QString str = "Hello World"; |
在上述代码中,我们定义了一个QString
对象str
,并赋值为"Hello World"。然后调用chop()
函数,传入参数1,表示删除一个字节。执行完毕后,str
的值将变为"Hello Worl",最后一个字节已被删除。
拖动窗口
在.h文件添加
1 | protected: |
在.cpp文件添加
1 |
|
Qt 弹窗页下的页面禁止操作
如果你想禁止在Qt弹窗页下的页面进行操作,可以采取以下方式:
- 设置模态对话框:使用
setModal(true)
方法将弹窗设置为模态对话框。这样,当弹窗打开时,用户无法在弹窗之外的页面上进行任何操作,直到关闭弹窗。
1 | // 创建弹窗对象 |
- 拦截事件:通过重写页面的事件处理函数,阻止特定的事件传递给页面,从而禁止操作。例如,你可以重写
QEvent::MouseButtonPress
事件处理函数,使其在弹窗页下禁止鼠标按键的点击操作。
1 | bool YourWidget::eventFilter(QObject *obj, QEvent *event) |
- 禁用控件:如果你只想禁止特定的控件操作,可以将这些控件设置为不可用状态。使用
setEnabled(false)
方法来禁用控件,并确保在弹窗关闭后恢复其可用状态。
1 | // 禁用控件 |
通过以上方法,你可以在Qt弹窗页下禁止页面操作。根据你的具体需求,选择适合的方法即可。
QString 替换
在QString中进行替换可以使用replace()函数。该函数的语法如下:
1 | QString& replace(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
其中,before表示要被替换的字符串,after表示替换后的字符串,cs表示是否区分大小写,默认为Qt::CaseSensitive(区分大小写)。
以下是一个示例代码:
1 | QString str = "Hello World"; |
如果有多个相同的子字符串需要替换,可以使用replace()函数的重载版本:
1 | QString& replace(QChar before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
以下是一个示例代码:
1 | QString str = "Hello World"; |
请注意,replace()函数会修改原始的QString对象,而不是返回新的字符串。如果需要保留原始字符串并得到替换后的结果,可以使用QString的复制构造函数或者赋值运算符。
Qt 中程序睡眠
在 Qt 中,可以使用 QThread
类的静态函数 msleep()
或 sleep()
来实现睡眠功能。
- 使用
msleep()
函数:
1 |
|
上述代码中的 QThread::msleep(2000)
会使当前线程休眠 2000 毫秒(即2秒)。
- 使用
sleep()
函数:
1 |
|
上述代码中的 QThread::sleep(2)
会使当前线程休眠 2 秒。
需要注意的是,以上两种方法都会阻塞当前线程的执行,所以一般不建议在 GUI 线程中使用。如果需要在 GUI 线程中进行延时操作,可以考虑使用 QTimer
类。
希望这个回答对你有帮助!如果还有其他问题,请随时提问。
QTcpSocket 不支持长连接
?:QTcpSocket 连接成功后自动断开,是不是不支持长连接
D: 是的,你的理解是正确的。QTcpSocket
在连接成功后不会自动保持长连接,它默认是一次性连接。当完成数据传输或发生错误时,QTcpSocket
会自动断开连接。
如果你想要实现长连接的效果,需要在合适的时机手动处理连接断开并重新连接的逻辑。可以通过监听 disconnected
信号来检测连接断开事件,并在该信号触发时重新调用 connectToHost()
方法进行重新连接。
以下是一个示例代码,展示了如何使用 QTcpSocket
手动实现长连接:
1 | QTcpSocket* socket = new QTcpSocket(this); |
通过以上代码,当连接断开时,你可以在 disconnected
信号的槽函数中重新调用 connectToHost()
方法来实现重新连接的逻辑。
需要注意的是,在使用长连接时,应谨慎考虑网络负载和资源消耗,并根据实际需求进行适当的调整。此外,具体的操作系统和网络环境可能会对长连接的行为有所不同。因此,请确保根据你的需求和环境进行适当的设置和调试。
希望这可以解答你的问题。如果还有其他疑问,请随时提问。
QFrame 于 QWidget 的区别
QFrame 和 QWidget 都是 Qt 框架中的类,用于创建图形界面应用程序。它们之间有一些区别,如下所示:
-
功能: QWidget 是 Qt 的基本窗口类,它提供了一个空白的窗口,您可以在其中放置其他 UI 元素(例如按钮、文本框等)。QWidget 是 Qt 应用程序中所有窗口和控件的基类。而 QFrame 是 QWidget 的子类,它提供了一些额外的功能,如边框、背景、阴影等。您可以使用 QFrame 来创建具有特定样式和外观的小部件。
-
外观: QWidget 是一个非可见的容器,它本身没有定义任何外观特性。它只提供了基本的窗口功能,如事件处理和布局管理。而 QFrame 具有一些可见的外观特性,如边框和背景色。您可以使用 QFrame 的样式属性和方法来定制它的外观。
-
布局管理: QWidget 提供了布局管理器(如 QVBoxLayout、QHBoxLayout 等),用于管理内部控件的位置和大小。您可以将其他控件添加到 QWidget 中,并使用布局管理器来自动调整它们的位置和大小。QFrame 也继承了 QWidget 的布局管理功能,并且可以将其他控件添加到其中。
总的来说,QWidget 是一个基本的窗口类,而 QFrame 是 QWidget 的子类,提供了一些额外的外观特性。如果您需要一个简单的容器来放置其他控件,并且不需要特殊的外观效果,那么使用 QWidget 是合适的选择。如果您需要一个带有边框、背景等外观特性的小部件,那么可以选择使用 QFrame。
Qt 全屏/退出全屏
在 Qt 中,要退出全屏模式,可以使用 QWidget
的 showNormal()
方法。该方法会将窗口恢复为正常大小,并显示在桌面上。
以下是退出全屏模式的示例代码:
1 | QWidget* window = new QWidget(); |
在上述代码中,我们首先将窗口设置为全屏显示,使用 showFullScreen()
方法。然后,通过调用 showNormal()
方法,窗口将退出全屏模式并恢复为正常大小。
请注意,showNormal()
方法会将窗口恢复到最初的大小和位置,因此如果在全屏模式之前窗口已被最大化或调整过大小,它将恢复到最初的状态。
TabWidget 根据QWidget 获取index
是的,在 QTabWidget
中可以根据 QWidget
获取其在 QTabWidget
中的索引(index)。您可以使用 QTabWidget
的 indexOf()
方法来实现这一功能。
以下是根据 QWidget
获取索引的示例代码:
1 | QTabWidget* tabWidget = new QTabWidget(); |
在上述代码中,我们首先创建了几个 QWidget
,然后将它们添加到 QTabWidget
中的不同选项卡中。接下来,我们使用 indexOf()
方法来获取 widget2
在 QTabWidget
中的索引,并将其存储在 index
变量中。
请注意,索引是从 0 开始的,表示 QTabWidget
中选项卡的顺序。如果 widget2
不存在于 QTabWidget
中,indexOf()
方法将返回 -1。
QTreeWidget 如何设置复选框
在项目中添加项目后默认是没有复选框的,需要在属性中设置,找到 chackState
属性,修改为 checked 后复选框后出现
如果一个父级项目下有多个子项目,选中一个子项目,父项目自动设置为半选(父项目与子项目联动),需要在父项目设置Tristate 属性