小编Rei*_*ica的帖子

自定义样式Qt快速控制

我想为我的Qt Quick Controls设计一个定制设计.例如,我想改变工具栏的背景颜色,因为我讨厌默认设计.我怎样才能做到这一点?

qt qml

7
推荐指数
1
解决办法
4912
查看次数

从Qt中选择SQLite

我尝试在Linux上的Qt 4.5.3上处理SQLite数据库.我已经创建了数据库.

然后,我尝试在Qt上执行select:

db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(filename); // Here is FULL path to the database. I've checked it twice :)
bool ok = db.open();
qDebug() << db.tables();

QSqlQuery query;
query.exec("select * from lessons");
qDebug() << query.size();
qDebug() << query.isSelect();
qDebug() << query.isValid();
Run Code Online (Sandbox Code Playgroud)

但调试控制台说:

("lessons", "weeklessons", "weeks") 
-1 
true 
false 
Run Code Online (Sandbox Code Playgroud)

为什么选择什么?我做错了什么?

c++ sql sqlite qt

6
推荐指数
2
解决办法
2万
查看次数

包含Qt标头的正确方法是什么?

到目前为止,我知道几种#includeQt类的方法:

  • #include <QtModule>

    例如QDomDocument,这带来了特定模块的所有类QDomElement,QDomNode以及来自的许多其他类#include <QtXml>.

  • #include <QClassName>

    这增加了一个特定的类,可能想要使用,例如声明QEvent,QStringList,QFile.

  • #include <qcstyleheader.h>

    这具有前一方法的效果,除了不同的标题名称.

所以我想知道,#includeQt课还有其他方法吗?它们是否相同,或者由于某些原因,它们中的一些是否优先于其他人?这取决于#include内部.cpp还是.h文件?这会影响可执行文件的编译速度和大小吗?

简而言之,最好的方法是什么?

c++ qt qt4

6
推荐指数
1
解决办法
4251
查看次数

如何使用QPushButton进行toggled()信号处理?

我有follwing代码,其中moreButton一个QPushButton.当我切换按钮时,没有任何反应.

难道不应该显示或隐藏secondaryGroupBoxtertiaryGroupBox

QObject::connect(moreButton, SIGNAL(toggled(bool)), secondaryGroupBox, SLOT(setVisible(bool)));
QObject::connect(moreButton, SIGNAL(toggled(bool)), tertiaryGroupBox, SLOT(setVisible(bool)));
Run Code Online (Sandbox Code Playgroud)

qt signals-slots

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

将静态库与qmake链接时如何提供链接器选项?

我想在使用qmake 构建静态库时为链接器提供选项.假设我在使用MSVC构建时想要获得详细的链接器输出.项目文件如下所示:

# mylib.pro
TEMPLATE = lib
TARGET = mylib
CONFIG += staticlib
QT += core
win32-msvc*: QMAKE_LFLAGS += /VERBOSE
unix: QMAKE_LFLAGS += -v
Run Code Online (Sandbox Code Playgroud)

这是整个项目文件.它应该导致一个空的静态库,其中没有对象.

设置既不QMAKE_LFLAGS也没有QMAKE_LFLAGS_STATIC_LIB,也没有LIBS对连接器有任何影响.这些变量中没有设置甚至使它成为Makefile.如果QMAKE_LFLAGS有效,我希望在命令行上看到/VERBOSE-v传递给链接器,适用于给定的平台.

使用什么makefile生成器并不重要,这种行为似乎是一致的.这两个感兴趣的平台是.

qmake -spec win32-msvc2008
qmake -spec macx-llvm
Run Code Online (Sandbox Code Playgroud)

由于qmake的跨平台特性,您可以在碰巧安装Qt的任何平台上进行测试.这从qt 4.8.4和5.1.1再现qmake.mkspec中给出的msvc版本无关紧要.

qt qmake

6
推荐指数
1
解决办法
9470
查看次数

使用文本或图像选项搜索ios 7的uiswitch

iOS 7为我们带来了没有文本的开关,消除了我们在iOS 6中使用的"onImage"和"offImage"属性的任何影响.我尝试使用DCRoundSwitch ..但它崩溃了应用程序.有没有人找到一个成功替换UISwitch有文本(在我的情况下,"是"/"否").

iphone uiswitch ios ios7

6
推荐指数
1
解决办法
4240
查看次数

在Qt Qml控件中,ApplicationWindow在运行时缺少原生主题

默认情况下,Qml Controls带有一个很好的原生主题.当我通过解释器将我的程序作为qml文件运行时,它看起来很棒,但是,一旦我将我的代码复制到c ++后端并构建它,它看起来完全没有注意到并且非常乏味.此外,我没有启用任何类型的控件样式来取消本机外观主题.

我唯一改变的是因为我的主qml文件中的根对象是ApplicationWindow,我将main.cpp文件从加载qmlviewer更改为创建我自己的应用程序引擎.我当时认为这可能是问题,但我不确定.

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickWindow>

int main(int argc, char *argv[]) {
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;

    engine.load(QUrl("src/qml/main.qml"));
    QObject *topLevel = engine.rootObjects().value(0);
    QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);

    window->show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

c++ qt qml qt5

6
推荐指数
1
解决办法
2366
查看次数

QMenu中的非互动项目

我正在尝试使用一些在QT中不具有交互性的项目来构建菜单.我在MyCustomMenuClass中继承了QMenu.我正在尝试将节标题添加到菜单中,以便用户更清楚.

例如,它应该如下所示:

My section 1 title
Action 1
Action 2
Action 3
My second section title
Action 4
Action 5
Run Code Online (Sandbox Code Playgroud)

问题是部分标题总是对鼠标做出反应,但我希望它们不会对鼠标作出反应,以使其更漂亮.有什么想法怎么做?

c++ qt qmenu

6
推荐指数
2
解决办法
3535
查看次数

如何利用Qt使QObject方法线程安全?

假设我们在QObject-deriving类中编写了一个非const方法:

class MyClass : public QObject {
  int x;
public:
  void method(int a) {
    x = a; // and possibly other things
  };
};
Run Code Online (Sandbox Code Playgroud)

我们希望使该方法成为线程安全的:意味着从任意线程调用它,并且同时从多个线程调用它,不应该引入未定义的行为.

  1. Qt提供了哪些机制/ API来帮助我们使该方法具有线程安全性?

  2. Qt的哪些机制/ API可以在方法执行"其他事情"时使用?

  3. 是否可以对"其他事物"进行分类,以便为使用Qt特定的机制/ API提供信息?

非主题是C++标准本身提供的机制,以及确保线程安全的通用/非Qt特定方式.

c++ qt thread-safety qthread

6
推荐指数
1
解决办法
1567
查看次数

是否可以从 Visual Studio 调试 QML?

我有一个加载 QML 项目的 QT 项目。当我从 QT Creator 运行程序时,调试程序的 QML 部分没有问题。我已经添加

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG ")

到我的 CMakeLists.txt 并检查“项目->运行”中“调试器设置”下的“启用 QML”

但我想从 Visual Studio 进行调试,因为那是我们通常工作的环境。

当您选中“启用 QML”框时,是否可以手动执行 QT Creator 所做的操作,以从 Visual Studio 激活调试?附加到某个进程或类似的进程?

我试图弄清楚“启用 QML”框的实际用途。但我一直无法找到对此的任何好的解释。

我们使用 CMake 来构建,MSVC 作为编译器,CDB 作为调试器。这些项目采用 QT5.5 和 QT Quick 2。Visual Studio 版本为 2015 Professional,QT Creator 版本为 4.1.0。

debugging qt visual-studio qml

6
推荐指数
1
解决办法
3169
查看次数

标签 统计

qt ×9

c++ ×5

qml ×3

debugging ×1

ios ×1

ios7 ×1

iphone ×1

qmake ×1

qmenu ×1

qt4 ×1

qt5 ×1

qthread ×1

signals-slots ×1

sql ×1

sqlite ×1

thread-safety ×1

uiswitch ×1

visual-studio ×1