inno setup 安装前判断程序是否在运行 MsgBox('程序正在运行,请先关闭程序后再重试!MsgBox('程序正在运行,请先关闭程序后再重试!此外还要下载一个psvince.dll 放在inno setup的目录里。安装的时候判断进程是否存在。卸载的时候判断进程是否存在。
mxonline安装总结 我本地的python是3.6的,但django是3.x的,直接在项目目录下python manage.py runserver运行,则提示缺少库,安装后又提示各种包依赖错误,感觉乱七八糟的。但是速度有点慢,上面的命令可以加上 -i https://mirrors.aliyun.com/pypi/simple/ ,下载源改成国内阿里的。看了cmd的日志输出,一次性安装成功,非常快,太棒了,剩下就是搞定mysql了,我系统的mysql是ok的,root账户和密码跟mxonline项目一样,
在QTableView中使用各种自定义委托 QT的MVC(View/Delegate)模型十分强大,可以利用各种控件来对表格的输入进行限制,不过我以前一直没有过,这几天研究了一下,写个小例子,希望大家喜欢。D:第五列是性别列,利用QComboBox委托对输入进行限制,该列的单元格只能输入Male或Female。B:第三列是ID列,只能输入1-12个数字,利用QLineEdit委托和正则表达式对输入进行限制。C:第四年龄列,利用QSpinBox委托进行输入限制,只能输入1-100之间的数字。A:第一列是编号列,使用只读委托,令该列的单元格是只读的。
如何添加需要管理员权限软件的开机自启 工作需要将程序设置成管理员权限运行,又需要设置在windows10上开机启动,按照网上设置windows10开机启动的方法,都失败了,找了很久才知道是因为我的程序是以管理员权限兼容方式运行的,所以开机启动会失败。作者:野生凌喵 https://www.bilibili.com/read/cv20744721/?6、点击“浏览”,然后选择你需要开机自启的程序(也就是上方提到的需要管理员权限的程序),再点击下一步。8、在弹出的窗口内,勾选“使用最高权限运行”,然后点击确定。5、“启动程序 ”下一步。
解决Django报错 : No module named ‘MySQLdb‘ mysqldb和pymysql都是python用于连接mysql的接口,如果你使用的python2.x的环境的话,使用pip进行安装的时候可以使用:pip install MySQL-python,则这时候就不需要在__init__.py中添加上面的那两行代码。如果使用的是python3.x的环境,同样使用pip进行安装的时候输入一下命令就可以:pip install pymysql。Django的版本是2.0,Python的版本号是3.6.4。
QT 不阻塞线程,达到延时的作用 这里穿插一个概念,所谓线程,不是new了一个线程对象就是线程,这个线程对象其实是在父线程中,跟其它对象一样,new了一个实例而已。所以使用继承QThread并重写run函数的方式实现线程时,一定切记,不是所有函数就一定会在线程中执行,除非它被run函数调用,或者在run当中使用rambda写匿名槽函数。而写匿名槽函数的时候,接收者千万别写this,this指针是指向父线程的线程对象,能作为句柄控制线程,但this隶属于父线程。上面说过线程的实现,离不开父线程的线程对象,它仅仅是子线程的操作句柄。
QSocketNotifier:套接字通知程序不能从另一个线程启用或禁用 本文介绍了QSocketNotifier:套接字通知程序不能从另一个线程启用或禁用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
QObject: Cannot create children for a parent that is in a different thread 这样的错误,多是由于在槽函数中多层嵌套时new操作出的问题,建议大家尽量避免在槽函数中进行new操作。测试代码:其实还是第四种做法,就是把WorkerA再次moveToThread一下,毕竟它是在构造函数里创建的,而那时候Worker所在的线程还是主线程。
解决QT对象跨线程调用问题 就表示在socket的生存线程运行,这可能是任何线程,取决于你在哪里实例化这个socket。Qt有很多IO相关的类,比如说QTcpSocket、QFile,总的来说,在Qt的框架内使用,还是非常方便的。这也是有道理的,很多时候真的是设计问题导致的,因为设计失误出现了不应该有的跨线程操作。除了IO相关的类,其他有一些Qt的类也不可以跨线程操作,比如说QTimer,也会报错。要解决这个问题,直观的说就是不要跨线程操作,网上也有很多类似的说明。请注意你的Qt版本,以及bug的修复情况,酌情使用这个方法。
Qt | 实现一个简单的可以转动的仪表盘 在paintEvent()中绘制这三张图片。当需要旋转指针的角度时,改变指针图片的角度,再调用update()函数重新绘制显示就可以了。设置角度的值,调用update()函数进行刷新。调用update();函数会执行paintEvent();定义一个改变指针角度值的函数void valueChanged(int value);
Linux信号量编程 semget() semctl() semop() ④ 如果不需要信号量,则从系统中删除它,此时使用semctl()函数的 IPC_RMID操作。需要注意的是,在程序中不应该出现对已经被删除的信号量的操作。① 创建信号量或获得在系统中已存在的信号量,此时需要调用 semget() 函数。不同进程通过使用同一个信号量键值来获得同一个信号量。② 初始化信号量,此时使用 semctl() 函数的SETVAL操作。当使用二维信号量时,通常将信号量初始化为1。③ 进行信号量的PV操作,此时,调用 semop()函数。这一步是实现进程间的同步和互斥的核心工作部分。
QT 编译报错 invalid use of incomplete type class Ui::Login 解决方法是在其对应的ui文件中,整个界面的ObjectName没有进行更改,打开其对应的ui文件,果然发现objectname还是原始的form,将其ObjectName更改为Login即可。编译始终报错:invalid use of incomplete type class Ui::Login,啥情况,该包含的ui_.h文件也包含了,也setup了,流程一个都不少,真扎心,难道一上午辛辛苦苦弄得login.ui文件白费力,要重新弄不带UI的吗?报上面的问题,说明Ui::Login编译器不认识。
在Windows中安装Mysql数据库(shawn安装成功记录) 4、初始化mysql, 执行 mysqld --initialize --console,这里会产生一个随机密码,记住这个密码后面会用到(红圈里的就是密码)1、点击“我的电脑-->属性-->高级系统设置-->环境变量”,接下来如下图所操作,在系统变量中选中path一行,点击“编辑”点击下载,选择自己的文件路径,C盘非C盘都可以(我没有放C盘),路径中不要出现中文,下载完后解压,解压后如下图。# 设置mysql的安装目录 ---这里输入你安装的文件路径----# 设置mysql数据库的数据的存放目录。
windows server上用GITBLIT图形化软件来搭建git服务器,客户端可以Ubuntu或windows 4 用户只需要把这个CLONE地址复制下来,在客户端用git clone命令克隆下来, 然后可以在这个CLONE下来的仓库里ADD文件,然后COMMIT后,再直接PUSH到远程仓库,因为第一步有在服务器设置了公钥文件,所以是不需要密码的。花了一整天的时间在windows server上来搭建git服务器,本以为直接用git软件加上copssh软件来搭,后面发现开源的Gitblit很适合搭建局域网版的git服务器,自带图形化界面,很直观一目了然。git服务器创建版本库,本地代码关联远程仓库并上传代码。
sql之left join、right join、inner join的区别 换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.B表记录不足的地方均为NULL.
Qt延时处理的四种方法 这种方法不会阻塞当前线程,尤其适合Qt的单线程带UI程序,或者UI线程,因为线程阻塞时,很明显的现象就是UI卡死。可以延时,但也会阻塞线程。它可以使得程序在while等待期间,去处理一下本线程的事件循环,处理事件循环最多100ms必须返回本语句,如果提前处理完毕,则立即返回这条语句。方法不会释放对象锁,其他线程无法访问对象,因此会阻塞线程;创建子事件循环,在子事件循环中,父事件循环仍然是可以执行的。上述代码使程序延时10 s,但是这种方法也会阻塞线程。方法会释放对象锁,使得其他线程能够访问该对象。
Qt之延时总结 不够频繁的话,显然可能会使GUI线程的响应变差,例如每500ms才被调用一次,那么GUI的事件循环就只能500ms才被处理一次,当然,这个问题可以通过设定processEvents()的第二个形参略微得到缓解,更好的做法是,保证被调的周期