我:/test.sqlite3
里面有一些数据库.qrc
.目标是在程序中直接使用此数据库.数据库仅用于阅读.
QSqlDatabase::setDatabase(":/test.sqlite3")
不起作用,因为Qt SQLite并非设计用于处理Qt的文件系统.
解决方案之一是将数据库复制.qrc
到其中D:\temdb.sqlite3
并使用它QSqlDatabase::setDatabase("D:\\temdb.sqlite3")
.但程序不能与OS文件系统一起使用.
第二种解决方案是存储:/dump.sql
在资源中,然后QSqlDatabase::setDatabase(":memory:")
通过读取和执行行来创建内存数据库并将dump导入其中:/dump.sql
.但这种方法很慢.
而且,最后,艰难但真实的方法是为SQLite创建自己的Qt插件,VFS
实现从RAM读取数据库,其中我们有字节 ":/test.sqlite3"
.
还有其他简单方法吗?
PS我已经阅读了所有问题,如将内存中的sqlite数据库转换为blob/char数组等,所以不要将其标记为重复.我的问题是关于任何其他方法.
我的目标是制作带有标签分隔符的菜单。因此,我正在运行以下代码:
QMenu *menu = new QMenu;
QAction *group1 = menu->addSeparator();
group1->setText("Group of actions #1");
menu->addAction("Action #1");
menu->addAction("Action #2");
menu->addAction("Action #3");
QAction *group2 = menu->addSeparator();
group2->setText("Group of actions #2");
menu->addAction("Action #1");
menu->addAction("Action #2");
menu->addAction("Action #3");
QToolButton btn;
btn.setText("Click me");
btn.setMenu(menu);
btn.setPopupMode(QToolButton::InstantPopup);
btn.show();
Run Code Online (Sandbox Code Playgroud)
并得到这个
而不是这个(我是由MS Paint创建的:))
怎么了?
编辑:是的,还有另一个类似这样的问题(QMenu中的非交互式项目),但是可能存在更简单的方法吗?
解决方案之一是使用“融合”主题:)我刚刚将以下代码添加到int main
函数中:
int main(int argc, char *argv[]) {
QApplication::setStyle("Fusion");
QApplication a(argc, argv);
...
Run Code Online (Sandbox Code Playgroud) 我有一些数据
{
"1": {
"result": 303
},
"2": {
"result": 307
},
"3": {
"result": 703
},
"4": {
"result": 909
},
"5": {
"result": 909
}
}
Run Code Online (Sandbox Code Playgroud)
所以我可以得到3键的结果字段:
ref.child("3").once("value", (snapshot) => {
const data = snapshot.val();
console.log(data.result);
});
Run Code Online (Sandbox Code Playgroud)
但是,我想获得的阵列结果第3,4,5个键在一个查询.我怎样才能做到这一点?