分类 云笔记 下的文章

“收集其他网站上看到的点滴内容。”

qt最后一个离线版本是
qt-opensource-windows-x86-5.14.2.exe
下载地址:
https://download.qt.io/archive/qt/5.14/5.14.2/
qt 6.4 不支持win7
只支持win10以及以后的产品。
Windows 11 21H2 (1809 or later) x86_64 MSVC 2022, MSVC 2019, MinGW 11.2
Windows 10 21H2 (1809 or later) x86_64 MSVC 2022, MSVC 2019, MinGW 11.2
也不支持x86

详细说明:
https://doc.qt.io/qt-6/supported-platforms.html

https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-windows-x86-5.14.2.exe
https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-mac-x64-5.14.2.dmg
https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-linux-x64-5.14.2.run

qt5支持win7
Windows 11 21H2 x86 and x86_64
Windows 10 21H2 x86 and x86_64 MSVC 2022, MSVC 2019, MSVC 2017, MSVC 2015, MinGW 8.1
Windows 8.1 x86 and x86_64 MSVC 2019, MSVC 2017, MinGW 8.1
Windows 7 x86 and x86_64 MSVC 2019, MSVC 2017, MinGW 8.1

https://doc.qt.io/qt-5/supported-platforms.html

ubuntu qt 6.4 remove

Updating or Removing Components
Once Qt is installed, you can use the Maintenance Tool under <install_dir> to add components, update, or remove installed components.

From The Terminal:

  1. Remove the package:

    sudo apt-get remove qtcreator && sudo apt-get remove qt5*

  2. Remove all the dependencies:

    sudo apt-get purge qtcreator && sudo apt-get purge qt5*

  3. Remove the unneeded packages that were once installed as a dependency:

    sudo apt-get autoremove

  4. Remove the retrieved packages from the local cache:

    sudo apt-get autoclean

From the GUI:

Open Qt Maintenance Tool Qt Maintenance Tool
Tick Uninstall Uninstall
Click next, then Uninstall enter image description here
Enter the Sudo password if requested then, press Finish.

Qt5.14.2安装在Win7上面要11G多。

要支持xp,估计要用Qt5.6
我现在还经常在用 Qt 5.6,因为这个版本支持 winxp.
https://download.qt.io/new_archive/qt/5.6/5.6.3/
Qt5可以使用msvc编译器和mingw编译器,而msvc的编译器从2015开始就对xp的支持变差,就算通过各种编译配置命令设置,能xp下运行,但是会很可能发生一些奇奇怪怪的bug。而mingw编译器没有这个问题,同一个版本可以在xp win7 win10各个系统使用,而无需其他配置。另外,Qt5目前有两个长期支持版本(Long Term Support)Qt5.6和Qt5.9,Qt5.6可以在XP和win7及以上系统开发,而Qt5.9只支持win7以上的系统开发和部署。 所以如果想使用Qt5的新功能,又想开发出的软件能在xp系统上运行,可以选择Qt5.6的mingw-32bit版本或者vs2013版本进行开发。
1、Qt从5.7版本开始不再支持WinXP系统,即编译生成的exe文件无法在WinXP系统运行。
2、Qt5.6是长期支持版本Long Term Support,它可以支持WinXP-32bit的系统。参考:http://doc.qt.io/qt-5.6/supported-platforms.html
下载网站是:
http://download.qt.io/new_archive/qt/5.6/5.6.3/
请注意,这几个版本是完全ok的:
qt-opensource-windows-x86-msvc2013_64-5.6.3.exe
qt-opensource-windows-x86-msvc2013-5.6.3.exe
qt-opensource-windows-x86-mingw492-5.6.3.exe

https://download.qt.io/new_archive/qt/5.6/5.6.3/qt-opensource-windows-x86-msvc2013-5.6.3.exe
https://download.qt.io/new_archive/qt/5.6/5.6.3/qt-opensource-windows-x86-mingw492-5.6.3.exe
https://download.qt.io/new_archive/qt/5.6/5.6.3/qt-opensource-linux-x64-5.6.3.run

qt分发程序的问题
在将 Qt 程序构建、运行、打包之后点击生成的 exe 文件发现出现以下“ZN10QArrayData10deallocateEPS_jj无法找到入口”错误。

无法定位程序输入点_ZN10QArrayData10deallocateEPs_jj于动态链接库..... .exe上。
之后发现是因为构建项目时使用的编译工具和打包软件时使用的编译工具不一样所导致的。

打开关于release相关的文件夹,找到该目录下release目录下的.exe程序。将这个.exe文件拷贝出来,创建一个单独的文件夹,放在这个文件夹下。
从Windows图标找到Qt软件,找到相同的编译工具,打开。
在该命令行窗口中通过盘符和cd命令转到才拷贝出来的exe程序所在的目录。
使用windeployqt命令打包,即windeployqt 文件名.exe 敲击回车。这一步操作是将所需的库文件全都拷贝到exe程序的当前文件
此时程序目录如下,点击exe文件即可正常运行程序。将该目录整体拷贝到其它Windows系统中也可直接运行。
from: https://www.twblogs.net/a/5ef7ff959d5eac1aaa69bcb6/?lang=zh-cn

Qt 错误
create directory “C:UsersAdministratorDocumentsError in " Util.asciify
项目->shadow build 去掉打钩,run正常.
或者打勾,手动建立一个临时目录供编译生成。

qt ui修改不生效

办法一:
在.pro文件中加入:

UI_DIR=./

这条命令直接将ui目录指定为项目目录。

办法二:
取消影子编译,这样所有编译在项目文件夹下进行,但不同kit的程序会覆盖(其实没什么问题)

qt 修改title
setWindowTitle(ui->label->text());

qt groupbox border

解决方案:

1. 在QGroupBox控件右键;
2. 选择 Change styleSheet... 选项卡;
3. 在文本框里输入(可以通过对话框上面的Add Resource、Add Gradient、Add
    Color、Add Font快速添加属性):
    QGroupBox {
        border-color: rgb(156, 156, 156);
        border-width: 1px;
        border-style: solid;
        margin-top: 0.5ex;
    }
    QGroupBox::title {
        subcontrol-origin: margin;
        subcontrol-position: top left;
        left: 10px;
        margin-left: 2px;
        padding: 0  0px;
    }
4. 点击OK按钮;
5. 确认效果。

Qt textedit写日志效果

void Dialog::on_pushButton_clicked()
{
    //ui->label->adjustSize();
    ui->pushButton->setText("Hello World!");

    ui->textEdit->document()->setMaximumBlockCount(30);
    ui->textEdit->append("123 然后每次再追加数据,就没问题了");

}

获取ms时间字符串

#include <chrono>
#include <iomanip>
#include <iostream>

string getTimestamp() {
  // get a precise timestamp as a string
  const auto now = std::chrono::system_clock::now();
  const auto nowAsTimeT = std::chrono::system_clock::to_time_t(now);
  const auto nowMs = std::chrono::duration_cast<std::chrono::milliseconds>(
      now.time_since_epoch()) % 1000;
  std::stringstream nowSs;
  nowSs
      << std::put_time(std::localtime(&nowAsTimeT), "%a %b %d %Y %T")
      << '.' << std::setfill('0') << std::setw(3) << nowMs.count();
  return nowSs.str();
}

Qt静态编译
ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi
下载地址:
https://github.com/judwhite/talks-goperf/tree/master/tools

安装(以mingw为例,下载路径为
https://download.qt.io/new_archive/qt/5.6/5.6.3/qt-opensource-windows-x86-mingw492-5.6.3.exe
qt-opensource-windows-x86-mingw492-5.6.3.exe,因为mingw免费

意安装路径不要有中文

3.修改mingw的连接器配置项为静态编译

也就是修改5.6.3\Src\qtbase\mkspecs\win32-g++\qmake.conf

将QMAKE_LFLAGS=后添加-static作为编译参数

将QMAKE_LFLAGS_DLL=-shared改为-static作为编译参数

安装编译需要的工具

根据qt官方编译windows库需要条件(https://doc.qt.io/qt-5/windows-requirements.html),需要安装Python与ActivePerl,安装完毕后,如果环境变量没有,请手动将这两个软件添加到环境变量中去。

同时请将安装目录下的Tools\mingw492_32\bin添加到环境变量中去。

运行configure

小沃运行的是如下完整命令configure.bat -c++std c++11 -platform win32-g++ -prefix C:\Qt\Qt5.6.3\5.6.3\staticlib -release -opensource -confirm-license -static -qt-zlib -qt-libpng -qt-libjpeg -qt-pcre -qt-freetype -no-qml-debug -no-openssl -no-opengl -nomake examples -nomake tests

(1)需要根据自己Qt的实际安装路径修改G:\Qt\Qt5.6.3\5.6.3\staticlib

(2)这个命令只添加了最基础的Qt支持,以下是可选修改

-opengl desktop 替换-no-opengl让其支持opengl库

-qt-zlib        压缩库,提高兼容性,可以去掉

-qt-pcre        正则表达式,提高兼容性,可以去掉

-qt-libpng      png格式图片,提高兼容性,可以去掉

-qt-libjpeg     jpeg格式图片,提高兼容性,可以去掉

-fontconfig     需要用到字体美化库时添加

7.编译

mingw32-make -j8

8为cpu核心数,这个数字最好是与cpu核心数一致,可充分利用多核特性。

8.安装

mingw32-make install

9.使用

以后使用需要将G:\Qt\Qt5.6.3\5.6.3\staticlib\bin添加到环境变量中去,然后通过qtcreate开发完毕程序后,整个程序的工程通过命令行运行如下命令即可。

qmake

mingw32-make

最后就会在工程文件下的release下看见编译出的东西了。

https://www.worldflying.cn/article-id-366.html

For example, on Ubuntu Linux systems, Qt can be compiled by several compilers such as clang or g++:

./configure -platform linux-clang
./configure -platform linux-g++
./configure -platform linux-g++-32
For Windows machines, either MinGW or Visual Studio toolchains can be used to compile Qt.

configure.bat -platform win32-g++
configure.bat -platform win32-msvc

https://doc.qt.io/qt-5/configure-options.html

Qt获取textedit内容
不同于其它控件的text()函数,QText Edit获取文本的函数为toPlainText()。

QString strTxtEdt = ui->textEdit->toPlainText();

函数原型:

QString QTextEdit::toPlainText() const;

Returns the text of the text edit as plain text.
Note: Getter function for property plainText.

Qt串口操作
头文件

#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QIODevice>
#include <QDateTime>
#include <QTimer>
#include <QByteArray>

QSerialPort *serialPort;
QByteArray RxData;

源文件

serialPort = new QSerialPort(this);
connect(serialPort, &QSerialPort::readyRead, this, &Dialog::ReadData);

foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
    qDebug()<<"port name"<<info.portName();
    qDebug()<<"Description"<<info.description();
    qDebug()<<"Manufacturer"<<info.manufacturer();
    ui->cbb_port->addItem(info.portName());
}    

serialPort->setPortName(ui->cbb_port->currentText());
if(serialPort->open(QIODevice::ReadWrite))
{
  add_memo_info("串口打开成功");
  ui->btn_serial->setText("关闭串口");
}
serialPort->setBaudRate(ui->cbb_bade->currentText().toInt());
serialPort->setParity(QSerialPort::NoParity);
serialPort->setDataBits(QSerialPort::Data8);
serialPort->setStopBits(QSerialPort::OneStop);
serialPort->setFlowControl(QSerialPort::NoFlowControl);

void Dialog::ReadData()
{
    RxData = serialPort->readAll();
    if(RxData.isEmpty())
    {
        add_memo_info("没有收到相应数据");
    }

    QString str =  RxData.toHex().toStdString().c_str();
    add_memo_info("recv<- " +  str);
}

bool Dialog::SendData(std::string strhex)
{
    QByteArray ba;
    string strorig = strhex;
    strhex = hex_to_string(strhex);
    ba = QByteArray::fromStdString(strhex);
    int ret = serialPort->write(ba);
    if(ret>0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

QT使用资源管理器打开目录

QString str = QCoreApplication::applicationDirPath();
QDesktopServices::openUrl(QUrl(str, QUrl::TolerantMode));

也可以使用

QDesktopServices::openUrl(QUrl::fromLocalFile(qApp->applicationDirPath()));

qt folder exists
To check if a directory named "Folder" exists use:

QDir("Folder").exists();

To create a new folder named "MyFolder" use:

QDir().mkdir("MyFolder");

Qt支持openssl

wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz
tar xvf openssl-1.0.2u.tar.gz
cd openssl-1.0.2
./config enable-shared
make -j4
cp libssl.so* libcrypto.so* ~/Qt5.6.3/5.6.3/gcc_64/lib/ -a

代码中检测SSL

 qDebug()<<QSslSocket::supportsSsl();
 qDebug()<<QSslSocket::sslLibraryVersionString();

true
"OpenSSL 1.0.2u 20 Dec 2019"

Windows平台 VLC播放RTSP视频延迟问题

找到工具->首选项,然后参数设置左下角选择“全部”,左边选择 “输入/编解码”->“网络缓存”选项,可以根据具体需要加以修改,300ms以内效果很好,实时性较好。
vlc 的默认缓存是1000ms,所以大家会觉得有1秒多的延迟,这是正常的。

截图 2023-01-09 08-38-07.png
linux平台上的vlc可以以命令行的方式来运行,而命令行是可以带参数的,我们只需要在参数里面指定这个延迟时间就可以了,

vlc rtsp://192.168.1.1:8556/test.avi  --newwork-caching=300

https://developer.aliyun.com/article/243646

Stable Diffusion是2022年发布的深度学习文生图模型​(英语)。它主要用于根据文本的描述产生详细图像,尽管它也可以应用于其他任务,如内补绘制、外补绘制,以及在提示词​(英语)指导下产生图生图的翻译。

它是一种潜在​(粤语)扩散模型,由慕尼黑大学的CompVis研究团体开发的各种生成性人工神經网络。它是由初创公司StabilityAI,CompVis与Runway合作开发的,并得到EleutherAI和LAION​(英语)的支持。 截至2022年10月,StabilityAI筹集了1.01亿美元的资金。

Stable Diffusion的代码和模型权重已公开发布,可以在大多数配备有适度GPU的电脑硬件上运行。而以前的专有文生图模型(如DALL-E和Midjourney)只能通过云计算服务访问。

Stable Diffusion模型支持通过使用提示词来产生新的图像,描述要包含或省略的元素,以及重新绘制现有的图像,其中包含提示词中描述的新元素(该过程通常被称为“指导性图像合成”(guided image synthesis))通过使用模型的扩散去噪机制(diffusion-denoising mechanism)。此外,该模型还允许通过提示词在现有的图中进内联补绘制和外补绘制来部分更改,当与支持这种功能的用户界面使用时,其中存在许多不同的开源软件。

Stable Diffusion建议在10GB以上的VRAM下运行, 但是VRAM较少的用户可以选择以float16的精度加载权重,而不是默认的float32,以降低VRAM使用率。

由于艺术风格和构图不受著作权保护,因此通常认为使用Stable Diffusion生成艺术品图像的用户不应被视为侵犯视觉相似作品的著作权, 但是如果生成的图像中所描述的真人被使用,他们仍然受到人格权的保护,[31] 而且诸如可识别的品牌标识等知识产权仍然受到著作权保护。尽管如此,艺术家们表示担心Stable Diffusion等模型的广泛使用最终可能导致人类艺术家以及摄影师、模特、电影摄影师和演员逐渐失去与基于人工智能的竞争对手的商业可行性。

与其他公司的类似机器学习图像合成产品相比,Stable Diffusion在用户可能产生的内容类型方面明显更加宽容,例如暴力或性暴露的图像。

StabilityAI的首席执行官Emad Mostaque解决了该模型可能被用于滥用目的的担忧,他解释说:“人们有责任了解他们在操作这项技术时是否符合道德、道德和法律”,将Stable Diffusion的能力交到公众手中会使该技术在整体上提供净收益,即使有潜在的负面后果。此外,Mostaque认为,Stable Diffusion的开放可用性背后的意图是结束大公司对此类技术的控制和主导地位,他们之前只开发了封闭的人工智能系统进行图像合成。

Stable Diffusion是在LAION-5B的图片和标题对上训练的,LAION-5B是一个公开的数据集,源自从网络上抓取的Common Crawl​(英语)数据。
该模型是在亚马逊云计算服务上使用256个NVIDIA A100 GPU训练,共花费15万个GPU小时,成本为60万美元。

stable diffusion github
https://github.com/CompVis/stable-diffusion

安装stable diffusion
官方项目并不适合我们这些新手直接使用,好在有一些基于 stable-diffusion 封装的 webui 开源项目,可以通过界面交互的方式来使用 stable-diffusion,极大的降低了使用门槛

https://github.com/AUTOMATIC1111/stable-diffusion-webui

AUTOMATIC1111 的 stable-diffusion-webui 是目前功能最多最好用的,强烈推荐,下面就来介绍如何使用它。

开源项目目前的更新频率很快,会不定期的修复一些 bug 或加入一些新功能,所以建议可以时常 git pull 拉取最新代码。

安装使用参考这个:
https://juejin.cn/post/7204356282588282940

常见错误:
ImportError: Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using pip install httpx[socks].

ERROR: Could not install packages due to an OSError: Missing dependencies for SOCKS support.

“ValueError: Unable to determine SOCKS version from socks://127.0.0.1:10008/”。

解决方法:

unset all_proxy && unset ALL_PROXY
export all_proxy="socks5://127.0.0.1:10008"

最后,到这儿就表示运行成功了
Creating model from config: /home/hesy/stable-diffusion-webui/configs/v1-inference.yaml
LatentDiffusion: Running in eps-prediction mode
DiffusionWrapper has 859.52 M params.
Applying cross attention optimization (Doggettx).
Textual inversion embeddings loaded(0):
Model loaded in 2.3s (create model: 0.5s, apply weights to model: 0.5s, apply half(): 0.4s, load VAE: 0.6s, move model to device: 0.3s).
Running on local URL: http://127.0.0.1:7860

To create a public link, set share=True in launch().

在网页打开http://127.0.0.1:7860就可以测试了。

郑静

在直来直去的网络时代,人们为何仍离不开古诗词?

https://www.ftchinese.com/story/001098917?full=y

吴晓波在年初2023年的跨年演讲中,提到2022年的全民偶像是一位中国古代诗词作者,苏东波。跌宕起伏的一年,让苏东坡的诗词,苏东坡的书画,甚至是苏东坡的人生故事,都成为了津津乐道的话题。人们似乎从来没有如此爱苏东坡,爱他的诗词,不管是别离还是思念,不管是坦途还是逆境,总能找到一句诗词贴合当下的情绪。不光是苏东坡,这些年古诗词不断被强调重视,从学生应考到全民追捧,从电视节目到商业文化运作,它已经成为一种文化符号,频繁出现在生活中。是回归,也是一场和今日生活的双向奔赴。

对大多数人来说,读诗是一件十分遥远的事情。离开了学校,离开了文科考试,诗也就离开了生活。但它又是一种根深蒂固的记忆,十分容易被唤醒。只要给点阳光和雨露,就能当春乃发生。

很多人小时候都有这样的经历,在学龄前就被大人教几首古诗,为入学打些基础。最终这些诗几乎成了肌肉记忆,久久不会忘记。等自己做父母,孩子到了牙牙学语的时候,也同样会教他们背两句“白日依山尽,黄河入海流”。学龄前的孩子会背诗,能多背诗,成为聪明好学的标志,说明这个孩子记忆力好,口齿清楚,以后读书也有望成才。家长在朋友们的表扬声中得到极大的安慰和满足,也有了继续教学的动力。

唐诗节奏感强,韵律好,像儿歌一样适合孩子朗朗上口,若是家长有心,能多讲解一下诗中的含义,确实对于孩子启蒙是非常有帮助的。中国古代讲究“书读百遍,其意自现”。还有一种说法是“熟读唐诗三百首,不会做来也会诌”。诵读,是学习的第一步,也是非常重要的一步。

2016年央视推出《中国诗词大会》,快速得将唐诗宋词再次推到大众的视线内,到今年已经播出了八季。在节目的前两季,出题的方向多在考察选手的记忆力,尤其是最后的飞花令环节,比拼的就是诗词储备量和临场发挥。所以出挑的选手大多年轻,记忆力好,又有丰富的比赛经验。几场下来,观众戏称这节目应该叫“中国诗词背诵大会”。节目播出后,带动了一场诗词热,尤其是各地的中小学,纷纷举办各种级别的诗词比赛。一来是为节目输送优质选手,二来也符合新的教材改革需要,让孩子们更多地接触古诗词,它已经成为考试中的重要考点。但背诵和记忆,终究不是诗词的全部。“知来路,明去意”,才能让这诗意走得更长远。

古诗词作为中国传统文化的重要组成部分,一度成为国学的代名词。在最火热的时期,和诗词大会一起走红的文化类节目还有很多,比如“国家宝藏”,“典籍里的中国”,“上新了,故宫”。这些节目都在不遗余力地普及中国传统文化,在娱乐中肩负起树立文化自信的任务。很多年前,文人士大夫们潜心编排的诗句,将日常万物赋予了特殊的文学意象,这些文学意象历经千百年,又总能和时下的生活找到一种对应,也许就是这种对应,让诗词在不同时代的走红都显得并不违和。唐诗宋词里的春花秋月,折柳种菊,字字句句都对应着独特的寓意。它含蓄温婉,和直来直去的网络用语完全不同,是一种久违的“文艺感”,这种文艺感即亲切又陌生。

一方面大家用诗词来注解生活,朋友圈里的二十四节气、传统节日,常常会选用一句古诗词来配图。比如立春时的“雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。” 白露时,惦念起诗经里的“蒹葭苍苍,白露为霜”。去年北京冬奥会上的二十四节气倒计时,将这份诗意定格成一张张壁纸。

另一厢,诗又和远方,神奇地匹配在一起,成为和骨感现实背离的另一种生活状态。当组合出现的时候,没有人去质疑,觉着它们天生就应该是在一起的。那应该是一个有着蓝天、白云,悠然自得的画面,可以畅想自己的未来,可以回忆精彩的过往,诗成了远方的代言人,长短句描述的一切都和身边完全不同,那是一种可望而不可及的状态。

除了婉约风月,诗词中还有励志与疗愈的成分。2022年,苏东坡成为全民追捧的网红,从出版物到短视频,苏轼的那句“一蓑烟雨任平生”不断被人引用。生活中的艰辛到了无处话凄凉的时候,诗人的竹杖芒鞋给大家开辟了另一条道理,自我心理疏导也许不能解决实际的问题,不能替代青菜和口罩,但它能带来一些勇气去面对那些糟心的状态。当我们无法改变外界现状的时候,也只剩下心理建设可以去努力了。“不思量,自难忘”,那些排列好的长短句,恰好浓缩成时下的情绪,胜过千言万语。

同时诗中那份“此心安处是吾乡”的从容淡定,也给生活带来一些希望,最起码是一种宽慰。诗词可以让人暂时脱离现实,这种阅读的愉悦感,比长篇小说或是晦涩的理论书籍来得更直接更亲近。在诗句中构建精神家园,让自己的人生变得有些不同,是每个阅读者最渴望的诗意。

今年诗词大会的亚军获得者朱彦军是一位普通的农民工,他从小热爱诗词,因为家境原因不得不放弃学业,早早外出打工。但诗词是他一生的爱好,还影响着自己的一双儿女。在节目中,他大声告白“我回去以后,一定好好听话好好读诗,好好挣钱,好好爱你”。在他的心中,诗词和家人同样重要,是他一生的爱好。

有了良好的推动力和群众基础,古诗词不出意外地被商业领域借鉴运用。在国潮热中,古诗词成为最好的广告文案,比如国风饮品,在杯子上都会印上两句诗词,让它变得与众不同,成为一杯有灵魂的奶茶。今年的诗词大会中有一场的主题是“燃”,辛弃疾、陆游、岳飞的诗词不断被提及,当人们一起背诵“三千功名尘与土,八前里路云和月”,何尝不是另一种“天涯共此时”。诗意之路漫漫,“知来意,明去意”,这场奔赴才不会错过。