QT内存知识点

QT内存知识点,第1张

在Qt中,以下情况下你new出的对象你可以不用亲自去delete:

实例1

运行正常,退出时会崩溃 ,因为label被close时,将会 delete 这儿label对象,但label对象却不是通过new分配到heap中的。
为了使得用户减少自己显式使用delete,Qt将delete隐藏的比较深。这样一来, 不使用new为对象分配空间时 ,反倒需要多多小心了。

实例2

因为退出时,w 比 label 先被析构,当 w 被析构时,会删除chilren列表中的对象,也就是这儿的 label。但 label 却不是通过new分配在heap中,而是在stack中,delte stack中的东西会导致崩溃。

QT内存管理机制: >QT 语音 中也可以创建群,很多的游戏战队都会在QT语音中创建游戏群。那么我们创建了群之后该怎么管理群成员呢?这个还有很多的小伙伴都不知道。下面我带来了群成员管理的使用方法,希望能帮助到大家。

第一:赛选类型

时段贡献筛选功能,可以让你查看到近3个月内任意时间段内的成员贡献值!
第二:成员资料导出

导出表格的可以根据时间段进行自定义设置导出!
第三:IP查看

另外对剔除重复IP进行了优化,可以查看到同一个IP下的其他成员哦!
点击IP字段后展开列表
大家都很期待的成员管理昵称搜索也低调上线了哦!
第四:房间数据情况

另外新增房间数据对比,在线数与成员数涨跌情况一目了然!
第五、成员管理

成员管理页面可以让查看房间内现有的所有成员的信息,包括马甲、积分、贡献、最近上线时间等。同时现在还新增了单个/批量上下马甲功能!点击成员信息后面的 *** 作菜单,即可对成员进行上下马甲 *** 作!
你还可以选择在总管理员、子房间管理员、会员、嘉宾的分类中进行批量 *** 作。
在成员列表上方,还可以根据一定的条件范围对成员进行筛选。
还可以剔除重复IP的成员哦!
大家一直期待的排序功能也新鲜出炉了!现在可以按照身份、积分、会员贡献、入会时间、最近上线时间中的任一条件进行升序或降序排列。
还有退出记录查询,可以方便查看到房间内人员流失情况。
第六、黑名单管理
房间管理系统新增黑名单管理功能,可以在管理后台对黑名单进行条件筛选、以及单个与批量解封 *** 作。

一、备份数据库1、打开SQL企业管理器,在控制台根目录中依次点开MicrosoftSQLServer
2、SQLServer组-->双击打开你的服务器-->双击打开数据库目录
3、选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择备份数据库
4、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份二、还原数据库1、打开SQL企业管理器,在控制台根目录中依次点开MicrosoftSQLServer
2、SQLServer组-->双击打开你的服务器-->点图标栏的新建数据库图标,新建数据库的名字自行取
3、点击新建好的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择恢复数据库
4、在d出来的窗口中的还原选项中选择从设备-->点选择设备-->点添加-->然后选择你的备份文件名-->添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)-->然后点击上方常规旁边的选项按钮
5、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项。在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置(也可以指定自己的目录),逻辑文件名不需要改动,移至物理文件名要根据你所恢复的机器情况做改动,如您的SQL数据库装在D:ProgramFilesMicrosoftSQLServerMSSQLData,那么就按照您恢复机器的目录进行相关改动改动,并且最后的文件名最好改成您当前的数据库名(如原来是bbs_datamdf,现在的数据库是forum,就改成forum_datamdf),日志和数据文件都要按照这样的方式做相关的改动(日志的文件名是_logldf结尾的),这里的恢复目录您可以自由设置,前提是该目录必须存在(如您可以指定d:sqldatabs_datamdf或者d:sqldatabs_logldf),否则恢复将报错
6、修改完成后,点击下面的确定进行恢复,这时会出现一个进度条,提示恢复的进度,恢复完成后系统会自动提示成功,如中间提示报错,请记录下相关的错误内容并询问对SQL *** 作比较熟悉的人员,一般的错误无非是目录错误或者文件名重复或者文件名错误或者空间不够或者数据库正在使用中的错误,数据库正在使用的错误您可以尝试关闭所有关于SQL窗口然后重新打开进行恢复 *** 作,如果还提示正在使用的错误可以将SQL服务停止然后重起看看,至于上述其它的错误一般都能按照错误内容做相应改动后即可恢复三、收缩数据库一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此 *** 作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开MicrosoftSQLServer-->SQLServer组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式, *** 作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据四、设定每日自动备份数据库强烈建议有条件的用户进行此 *** 作!
1、打开企业管理器,在控制台根目录中依次点开MicrosoftSQLServer-->SQLServer组-->双击打开你的服务器
2、然后点上面菜单中的工具-->选择数据库维护计划器
3、下一步选择要进行自动备份的数据-->下一步更新数据优化信息,这里一般不用做选择-->下一步检查数据完整性,也一般不选择
4、下一步指定数据库维护计划,默认的是1周备份一次,点击更改选择每天备份后点确定
5、下一步指定备份的磁盘目录,选择指定目录,如您可以在D盘新建一个目录如:d:databak,然后在这里选择使用此目录,如果您的数据库比较多最好选择为每个数据库建立子目录,然后选择删除早于多少天前的备份,一般设定4-7天,这看您的具体备份要求,备份文件扩展名一般都是bak就用默认的
6、下一步指定事务日志备份计划,看您的需要做选择-->下一步要生成的报表,一般不做选择-->下一步维护计划历史记录,最好用默认的选项-->下一步完成
7、完成后系统很可能会提示SqlServerAgent服务未启动,先点确定完成计划设定,然后找到桌面最右边状态栏中的SQL绿色图标,双击点开,在服务中选择SqlServerAgent,然后点击运行箭头,选上下方的当启动OS时自动启动服务
8、这个时候数据库计划已经成功的运行了,他将按照您上面的设置进行自动备份
修改计划:
1、打开企业管理器,在控制台根目录中依次点开MicrosoftSQLServer-->SQLServer组-->双击打开你的服务器-->管理-->数据库维护计划-->打开后可看到你设定的计划,可以进行修改或者删除 *** 作五、数据的转移(新建数据库或转移服务器)一般情况下,最好使用备份和还原 *** 作来进行转移数据,在特殊情况下,可以用导入导出的方式进行转移,这里介绍的就是导入导出方式,导入导出方式转移数据一个作用就是可以在收缩数据库无效的情况下用来减小(收缩)数据库的大小,本 *** 作默认为您对SQL的 *** 作有一定的了解,如果对其中的部分 *** 作不理解,可以咨询动网相关人员或者查询网上资料
1、将原数据库的所有表、存储过程导出成一个SQL文件,导出的时候注意在选项中选择编写索引脚本和编写主键、外键、默认值和检查约束脚本选项
2、新建数据库,对新建数据库执行第一步中所建立的SQL文件
3、用SQL的导入导出方式,对新数据库导入原数据库中的所有表内容

数据库只是存储数据的一种方式,用数据库查询,更新比较方便,所以才用数据库。如果不用数据库也行,用文本文件!excel文件都行。只是查询修改起来不方便。至于如何做,数据库都会了,换成文件只是改变了数据的访问方式,其他都一样,像界面展示都一样。

在 Qt 中,我们将窗口和控件统称为部件(Widget)

窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、最大化按钮等。
控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。
QWidget 是所有用户界面元素的基类,窗口和控件都是直接或间接继承自 QWidget,QMainWindow、QWidget、QDialog 三个类就是用来创建窗口的,可以直接使用也可以继承后再使用。
QMainWindow 窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,可以作为GUI程序的主窗口。
QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或与用户进行互动,它可以是模态的也可以是非模态的。QDialog 没有菜单栏、工具栏、状态栏等。

这里我们先看QMainWindow

主窗口及其主要组成部分

以QMainWindow为中心,构成了传统界面的各部分,以普通window上的文件夹为例。

最上一行,叫菜单栏,由“文件”、“编辑”等菜单组成,“帮助”菜单已点击,d出菜单选项项,Qt中用动作类QAction来表示菜单选项。即QAction构成了菜单,菜单构成了菜单栏,QAction可加入文字,等构成漂亮的菜单项。QDockWidget悬浮部件较特殊,它在程序运行时,拖动可改变其位置。

工程建立选择继承类,如下图。

建成后,ui文件如下,“在这里输入”即是要求我们创建菜单,菜单栏下面一层即是默认的工具栏,很细的一横条,没有添加动作,所以很细小(最左方有一个小点)。

双击“在这里输入后”,可以写入文字,如下图,输入了创建了常用的“文件”。在下方五个按钮处的第一个新建一个动作,可以指定动作的名称,快捷键等,建完后,将它拖动到菜单或工具栏。

以下是效果图:

这时,只要将这个“动作”的“触发”信号连接到某个槽函数后,点击该菜单项或工具栏上的“新建”,就会执行槽函数。

一个 主窗口各部分分布如图:

公有函数主要部分如下:

toolbararea类型是qflags<toolbararea>的typedef。它存储一个或多个toolbararea值。

工具按钮的样式,描述按钮的文本和图标应如何显示。

flags Qt::DockWidgetAreas
dockWidgetAreas类型是qFlags<dockWidgetArea>的typedef。它存储一个或多个DockWidgetArea值。

flags QMainWindow::DockOptions
此枚举包含指定qmainwindow的停靠行为的标志。

上一个例子中我们使用了窗口的形状保存和恢复,这里主要使用geometry属性保存和恢复窗口的几何形状。在Windows中,基本上是存储QWindow::geometry()的结果,并在下次会话调用show()之前,调用QWindow::setGeometry()。

在X11中,这可能无法工作,因为一个不可见的窗口没有边框。后来窗口管理器将装饰窗口。当这种情况发生时,窗口朝向屏幕的底部/右下角移动取决于装饰框的大小。虽然X11提供了一种方法来避免这种转变,有些窗口管理器仍无法实现此功能。

当使用Qt Widgets时,Qt提供了保存和恢复一个窗口部件的几何形状和状态的函数。QWidget::saveGeometry()保存窗口的尺寸和最大化/全屏状态,而QWidget::restoreGeometry()用来恢复它。恢复函数还检查恢复几何形状是否超出可用的屏幕几何形状,如果超过了,则会适当地进行修改。

保存/恢复几何形状的方式有两种:
1、保存/恢复geometry()
2、保存/恢复pos()、size()

一般情况下,在程序退出之前,保存最后一次的几何形状和位置。

在show()之前,然后读取上次保存的信息,一般在构造函数中调用。

另一种方式是同时存储pos()和size(),并在show()之前调用QWidget::resize()和move() 。

一般情况下,在程序退出之前,保存最后一次的几何形状和位置。常在closeEvent()中调用。

在show()之前,然后读取上次保存的信息,一般在构造函数中调用。



打开APP



Lsa_BigDevil
关注
Qt中继承QWidget之后,样式表不起作用解决方法(5) 原创
2022-06-14 15:31:31
 1点赞

Lsa_BigDevil 
码龄10年
关注
Qt中继承QWidget之后,样式表不起作用解决方法一共有三个分别为:
方法一:设置属性 this->setAttribute(Qt::WA_StyledBackground, true);
方法二:改成继承QFrame,因为QFrame自带paintEvent函数已做了实现,在使用样式表时会进
行解析和绘制。
方法三:重新实现QWidget的paintEvent函数时,使用QStylePainter绘制。
void Widget::paintEvent(QPaintEvent )
{
QStyleOption option;
optioninitFrom(this);
QPainter painter(this);
style()->drawPrimitive(QStyle::PE_Widget, &option, &painter, this);
}
1,有时候在界面上加了d簧,需要动态改变d簧对应的拉伸策略,对应方法为changeSize,很多人会选择使用set开头去找,找不到的。
2,在使用QFile的过程中,不建议频繁的打开文件写入然后再关闭文件,比如间隔5ms输出日志,IO
性能瓶颈很大,这种情况建议先打开文件不要关闭,等待合适的时机比如析构函数中或者日期变了
需要重新变换日志文件的时候关闭文件。不然短时间内大量的打开关闭文件会很卡,文件越大越
卡。
3,在很多网络应用程序,需要自定义心跳包来保持连接,不然断电或者非法关闭程序,对方识别不
到,需要进行超时检测,但是有些程序没有提供心跳协议,此时需要启用系统层的保活程序,此方
法适用于TCP连接。

这可能是因为你的Qt程序没有足够的权限来写入目标文件。你可以尝试以下方法解决此问题:
1 将你的Qt程序以管理员身份运行,如果它可以成功写入文件,说明权限确实是问题所在。
2 检查目标文件的访问权限,并确保你的Qt程序有足够的权限写入该文件。如果需要,你可以通过修改文件的权限或者将文件移动到程序有写权限的目录来解决此问题。
3 如果你使用的是Windows系统,你可以在代码中调用`SetCurrentDirectory()`函数来修改当前工作目录,使得程序运行时拥有写权限。
4 如果以上方法都无法解决问题,你可以尝试更改程序的用户权限,或者为程序配置特定的ACL(访问控制列表)来获得足够的权限。
希望这些方法能够帮助你解决问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13358183.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-21
下一篇 2023-07-21

发表评论

登录后才能评论

评论列表(0条)

保存