我已经在Qt中使用JSON相当一段时间了,而且我总是按照示例中的方式进行操作。但是,我想知道与将项目添加到QJsonObject时使用的直接分配相比,对QJsonValueRef的直接分配实际上是否存在区别,即这些行:QJsonObject::insert
json["name"] = mName;json.insert("name", mName);有所不同还是仅仅是编码风格的问题?
所以我希望制作我们自己的通用继承复选框类,它能够在其构造函数中获取一些值,并以我们需要的方式弹出一个完全连接到我们模型的小部件.
目前我们在视图中做了类似的事情
connect(checkboxWidget, &QCheckbox::Clicked, this, &VMyView::Signal);
Run Code Online (Sandbox Code Playgroud)
单击复选框时,会从VMyView发出信号.
如果我想将该信号作为参数传递到我的新继承类中,并将其连接到自己的connect语句中,我该怎么做?
研究表明我可以传递一个const char*但是我得到了信号/插槽不匹配的编译错误.
例
CheckBox(View myView, const char* signal)
{
connect(this, &QCheckBox::Clicked, myView, signal);
}
Run Code Online (Sandbox Code Playgroud)
返回Signal和slot参数不兼容的错误.我也试过SIGNAL(信号)同样的结果.
我正在使用aframe-ar,需要将视频流显示在与场景嵌入的同一div中。
我正在尝试使用默认场景:
<a-scene embedded arjs='sourceType: webcam; debugUIEnabled: false;'>
<a-marker preset="hiro">
<a-box position='0 0.5 0' material='color: black;'></a-box>
</a-marker>
</a-scene>
Run Code Online (Sandbox Code Playgroud)
渲染的盒子成功嵌入到周围div,但我的网络摄像头的视频流是全屏的,并放置在其他 html 元素后面。
我还尝试明确指定相机,但这没有帮助!
简而言之:我想让视频也嵌入到周围的环境中div。
我怎样才能做到这一点?
我在SQL Server Express与字段的表name varchar(10)和timeVar time我要保存的值QTime的变量time场.
这是我尝试过的:
QTime time = QTime::currentTime();
QString timeString = time.toString("hh:mm:ss");
QString query = QString("insert into timeHold(name,timeVar) values ('ABC','%2')").arg(timeString);
qry->prepare(query);
qry->exec();
Run Code Online (Sandbox Code Playgroud)
但是,我明白了QSqlQuery::value: not positioned on a valid record.
当我从SQL Server Management Studio将值插入表中时,insert into timeHold values('XYZ', '12:17:35')效果很好.令我惊讶的是,当我尝试从管理工作室读取存储在表中的值时,我能够获得名称字段,但不能获得时间字段.
这是我用来从表中读取值的代码:
QString query = QString("select * from timeHold");
qry->prepare(query);
qry->exec();
qry->first();
int noOfRecords = qry->numRowsAffected();
do {
qDebug() << qry->value(0).toString();
qDebug() << qry->value(1).toString();
} while (qry->next());
Run Code Online (Sandbox Code Playgroud)
代码生成以下输出:
"ABC"
"\u0017" …Run Code Online (Sandbox Code Playgroud) 我正在处理具有选择列表的表单:
<%= f.select :type, options_for_select(Property.types), {prompt: "Select Type of Property..."}, class: "form-control" %>
Run Code Online (Sandbox Code Playgroud)
type是我数据库中的一个整数。该Property.types是从拉列表enum中我的财产模型属性:
enum type: { Type_1: 1, Type_2: 2, Type_3: 3 }
Run Code Online (Sandbox Code Playgroud)
出于某种原因,在提交表单时,我收到一个错误:
ArgumentError ('1' is not a valid type): Completed 500 Internal Server Error in 10ms (ActiveRecord: 4.0ms)
我认为这是因为选定的列表值是作为字符串而不是整数提交的。
我正在使用 Rails v.5.2.1。
如何解决这个问题?
在我的代码中,有一堆尝试QIcons从
QStyle标准像素图创建的调用,例如:
QIcon groupIcon;
groupIcon.addPixmap( style()->standardPixmap( QStyle::SP_DirClosedIcon ),
QIcon::Normal, QIcon::Off );
groupIcon.addPixmap( style()->standardPixmap( QStyle::SP_DirOpenIcon ),
QIcon::Normal, QIcon::On );
Run Code Online (Sandbox Code Playgroud)
虽然这可以正常工作,但使用模型的图标
Qt::DecorationRole会根据项目的展开状态显示打开或关闭的图标,但它有两个问题:
QStyle::standardPixmap被标记为已过时,并被QStyle::standardIcon描述为首选方法。我不确定如何将上面的代码翻译成QStyle::standardIcon。
QIcon groupIcon( style()->standardIcon( QStyle::SP_DirClosedIcon ) );
Run Code Online (Sandbox Code Playgroud)
对于封闭的项目效果很好,并且在 hidpi 上看起来很棒。但我不知道如何添加状态SP_DirOpenIcon。没有像“ QIcon::addIcon”这样的等效方法QIcon::addPixmap。
这里采取的正确方法是什么,它是高 dpi 友好且面向未来的?
我在Qt 的 Doc 中找到了这个:
QStringViews 应该通过值传递,而不是通过引用到常量:
他们给出了以下示例:
void myfun1(QStringView sv); // preferred
void myfun2(const QStringView &sv); // compiles and works, but slower
Run Code Online (Sandbox Code Playgroud)
这怎么可能?
从Qt 5.10升级到Qt 5.11之后,我开始遇到问题,无法使用QDoc为现有项目生成文档。
尽管源代码中存在相应的注释,但文档中缺少功能是许多问题之一。
我设法将问题缩小到包含Q_OBJECT宏,如提供的代码示例所示(请参见下文)。
Qt文档中确实提到了这一点:
如果未由
Cpp.ignoretokens或Cpp.ignoredirectives变量指定,则非标准构造(通常为宏)可能会导致错误的文档编制。
Q_OBJECT 但是不应被认为会引起问题,因为它会写得更远:
Q_OBJECT但是,该宏是一个例外:QDoc可以识别此特殊的非标准构造,因此无需使用Cpp.ignoredirectives变量进行指定。
无论如何,我都将其包含qt-cpp-defines.qdocconf在qdocconf文件中。
我也尝试过手动添加Q_OBJECT到忽略列表
Cpp.ignoredirectives += Q_OBJECT
Run Code Online (Sandbox Code Playgroud)
但结果是一样的。
我体验Windows 10和Ubuntu 17下所描述的问题在Windows 7下我无法执行qdoc.exe在所有。
qdocconf克服此问题的正确配置是什么?
为了快速重现(在实际情况下,声明和实现被拆分,并添加了适当的注释),请考虑以下设置:
oo
#include <QObject>
class Foo : public QObject
{
// Q_OBJECT // <-- uncomment this to break QDoc
public:
Foo() {}
void boo() {}
protected:
void moo() {}
};
Run Code Online (Sandbox Code Playgroud)
Foo.cpp
#include "Foo.h" …Run Code Online (Sandbox Code Playgroud) 我有一个很大的日志数据(100、1000、100000、...记录),我想以下列方式将其可视化:
为了避免性能和内存问题,我应该使用哪个小部件(例如QListView, QListWidget)以及如何使用?
我有一个问题,Qt 中的文本删除在表格中过于激进,请参见图片。

带有完整数字0.8888的单元格......自从显示QTableWidget以来我已经进行了编辑,其他的与创建QTableWidget时一样。看起来 elide 是根据较小的宽度计算的,实际上也是如此。当小部件变得可见时,如何防止这种情况并立即删除正确的文本?
简化代码以重现:
QTableWidget *tableWidget;
tableWidget = new QTableWidget(Dialog);
tableWidget->setGeometry(QRect(40, 20, 256, 192));
tableWidget->setRowCount(4);
tableWidget->setColumnCount(1);
tableWidget->setItem(0, 0, new QTableWidgetItem("0.234823489789234"));
Run Code Online (Sandbox Code Playgroud)
和结果
请注意,我想避免自己进行删除,因为用户可以编辑该值。自己进行删除意味着在编辑开始时(也许通过委托)放回真正的值。会很复杂。