小编cbu*_*art的帖子

QDoubleValidator不工作?

我正在尝试在Qt 4.2中的行编辑框中应用验证器,但它无法正常工作:

 QDoubleValidator *haha= new QDoubleValidator(this);
 haha->setBottom(0.00);
 haha->setDecimals(2);
 haha->setTop(100.00); 
 get_line_edit()->setValidator(haha);
Run Code Online (Sandbox Code Playgroud)

要么

 QDoubleValidator *haha= new QDoubleValidator(0.00,100.00,2,this);
Run Code Online (Sandbox Code Playgroud)

无论如何,我仍然可以进入我想要的任何价值.

但是,如果我切换到QIntValidator它,它的工作原理!

所以我去谷歌并进行了一些搜索,很多人过去常常遇到同样的问题.这是一个错误吗?或者应该有其他一些我应该做的设置?

c++ validation qt qvalidator

5
推荐指数
3
解决办法
1万
查看次数

使用Sqlite3 blob在C++程序中使用RAM

我在C++程序中使用sqlite3 dbms,主要用于将文件存储为blob对象(我知道这不是最佳选择).

很显然,我写出来递增,因为他们有时可能大(40-80MB)为了做到这一点我必须使用绑定功能,首先创建Blob的一个占位符sqlite3_bind_zeroblob(...),之后我打开BLOB写入和并将其逐步阅读.

我面临的问题是,当我创建blob占位符(期间sqlite3_step)时,我的应用程序的RAM消耗达到80-160MB,持续2-3秒,一旦创建,RAM消耗最多回到2-3MB.

我不明白为什么!如果他们创建了一种逐步写入blob的方法,那么肯定有一种方法可以创建那个愚蠢的占位符而不会浪费160MB的RAM,但我没有找到它.你有什么建议吗?

sqlite3_stmt* stm = NULL;
sqlite3_blob *BLOB = NULL;

rc = sqlite3_prepare_v2(db, sql.c_str(), -1, &stm, NULL);

rc = sqlite3_bind_blob(stm, 1, wpath.c_str(), wpath.size()*sizeof(wchar_t), SQLITE_STATIC);
rc = sqlite3_bind_text(stm, 2, hash.c_str(), hash.size(), SQLITE_STATIC);
rc = sqlite3_bind_zeroblob(stm, 3, size);
rc = sqlite3_bind_int(stm, 4, versione);
rc = sqlite3_bind_blob(stm, 5, last.c_str(), last.size()*sizeof(wchar_t), SQLITE_STATIC);

rc = sqlite3_step(stm);

if (rc != SQLITE_DONE) {
    fprintf(stderr, " This file was already present in the database!\n", rc);
    return;
}
else {
    fprintf(stdout, "Record …
Run Code Online (Sandbox Code Playgroud)

c++ sqlite blob

5
推荐指数
1
解决办法
260
查看次数

如何使用 OpenSSL API 从其 PEM 格式字符串中读取 RSA 公钥?

我可以使用该PEM_read_RSA_PUBKEY功能轻松读取 PEM文件。但是,我有一个已内置到可执行文件中的公钥,我不想制作临时文件。阅读此示例/教程:http : //hayageek.com/rsa-encryption-decryption-openssl-c/我想出了以下解决方案:

#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <openssl/bio.h>

#include <QFile>
#include <QByteArray>

#include <stdexcept>
#include <cassert>
#include <cstring>

RSA* createRSA(const char* key)
{
    RSA *rsa = nullptr;
    BIO *keybio ;
    keybio = BIO_new_mem_buf(key, -1); // !!!
    if (!keybio)
    {
        throw std::runtime_error("Failed to create key BIO");
    }
    rsa = PEM_read_bio_RSA_PUBKEY(keybio, nullptr, nullptr, nullptr);  // !!!
    if(!rsa )   
    {
        throw std::runtime_error("Failed to create RSA");
    }
    BIO_free(keybio); // !!!
    return rsa;
}

int main()
{ …
Run Code Online (Sandbox Code Playgroud)

c c++ openssl pem

5
推荐指数
1
解决办法
4816
查看次数

将 Visual Studio 项目导出到 Qt 项目

我想将我的 Visual Studio 项目导出到 Qt 项目。

如何.pro从 Visual Studio 项目生成文件?我安装了 Qt 插件,但我没有找到这样的选项。

c++ qt visual-studio sln-file

5
推荐指数
1
解决办法
8164
查看次数

在Visual Studio中调试Qt应用程序并检查不透明对象(例如QDir或QFileInfo)

我正在调试Visual Studio 2013中的Qt应用程序.我安装了Qt的官方Visual Studio插件.我可以看到内容QString,但对于任何其他QObject如a QDirQFileInfo对象,我无法看到它的内容.

我做错了什么或者这根本不可能?

当我展开一个QDir实例时,我只能看到一个名为的成员d_ptr,它引用了一个QDirPrivate我无法检查的对象.我还不能调用的其他功能QDirQFileInfo诸如path(),或filePath()在从调试器的运行时间.当我尝试Visual Studio声称该函数的地址已被优化.

无论如何调试这个而不向程序添加几十个日志语句?

c++ qt visual-studio-2013

5
推荐指数
2
解决办法
1385
查看次数

删除 QListWidgetItem: QListWidget::takeItem(item) 与删除项目

QListWidgetItem* item要从a 中删除给定的,QListWidget* lst我可以使用以下代码(取自此答案):

delete lst->takeItem(lst->row(item)); // method 1
Run Code Online (Sandbox Code Playgroud)

另一方面,如果我只是销毁该项目,它也会从列表中删除(至少它会从列表中消失QListWidget)。

delete item; // method 2
Run Code Online (Sandbox Code Playgroud)

QListWidget文档指示使用takeItem但没有提及任何有关删除该项目的信息(QListWidgetItem也没有任何信息)。

要从列表中删除项目,请使用 takeItem()。

takeItem使用方法一(然后删除)和方法二(直接删除)有什么区别吗?也许我错过了内存泄漏,未发出信号等?我的意思是,删除该项目(当然,如果您有的话)似乎比搜索它更容易。

c++ qt qlistwidget qlistwidgetitem

5
推荐指数
1
解决办法
5570
查看次数

如何在Python中连接不同大小的元素级两个列表?

我有两个字符串列表,我想按元素将它们连接起来以创建第三个列表

第三个列表应按list_1原样包含所有元素,并为每个可能的元素组合添加新元素list_1+list_2

请注意,两个列表的长度不一定相同

例:

base = ['url1.com/','url2.com/', 'url3.com/',...]

routes = ['route1', 'route2', ...]

urls = ['url1.com/' + 'url1.com/route1', 'url1.com/route2', 'url2.com/', 'url2.com/route1', 'url2.com/route2', ...]
Run Code Online (Sandbox Code Playgroud)

我尝试使用该zip方法,但未成功

urls = [b+r for b,r in zip(base,routes)]
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
1
解决办法
987
查看次数

如何在Wamp 3中的PHP版本之间切换?

在旧的wampserver中,我记得有一个版本选项卡,允许您在多个版本的PHP之间切换.像这样:

旧Wamp服务器PHP版本选项卡

但现在在wampserver 3中我没有看到任何标签.只有一个wamp设置和工具选项卡 - 如下所示:

Wampserver3设置选项卡

和这里:

Wampserver3工具选项卡

有谁知道在wampserver 3上的不同PHP版本之间切换?

php wamp wampserver

5
推荐指数
1
解决办法
2147
查看次数

Qt5 QWidget:悬停效果延迟

我试图用以下CSS 创建任何类型的:hover效果QWidget:

QWidget.mis--MyButton {
    width: 300px;
    height: 300px;
    background:  white;
    /*cursor: pointer;*/
    font-family: Calibri;
    border-radius: 10px;
    border: 2px solid rgb(218, 218, 218); /*#007FEB;*/

    padding: 1px;
    margin-top: 2px;
}

QWidget.mis--MyButton:hover 
{
    border: 2px solid #007FEB; /*#007FEB;*/
}
Run Code Online (Sandbox Code Playgroud)

但是,从鼠标进入小部件到效果出现的时间有2-3秒的轻微延迟.

这是发生的事情的截屏视频:

https://youtu.be/aNfEKabut-A

对于绘画我使用以下代码:

void MyButton::paintEvent(QPaintEvent * event)
{ 
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);   
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);

}
Run Code Online (Sandbox Code Playgroud)

即使我试图摆脱CSS,即不加载CSS,只是尝试产生任何效果并使用Qt的风格,例如,这样:

style()->drawPrimitive(QStyle::PE_PanelButtonBevel, &opt, &p, this);
Run Code Online (Sandbox Code Playgroud)

并且只是关闭CSS,我仍然得到同样的延迟.

这是一个相同效果的截屏视频,没有加载CSS并QStyle::PE_PanelButtonBevel选择了paintEvent以下选项:

https://youtu.be/kT10zdepsGk

计算机相当强大,Ryzen 7在Windows 10上,而我使用的是VC++ 2017,所以它不应该与之类似.

如果您需要更多代码,请告诉我们.

谢谢!

css c++ qt visual-c++ qt5

5
推荐指数
1
解决办法
378
查看次数

并行执行"git submodule foreach"

有没有办法git submodule foreach并行执行命令,类似于--jobs 8参数的工作方式git submodule update

例如,我们工作的项目之一涉及近200个子组件(子模块),我们大量使用该foreach命令对它们进行操作.我想加快它们的速度.

PS:如果解决方案涉及脚本,我在Windows上工作,大多数时候,使用git-bash.

git parallel-processing git-submodules

5
推荐指数
1
解决办法
650
查看次数