标签: qt5

在QML中使用C++ - slot,返回命名空间中的类型

我首先要提到的是,以下工作正常到Qt 5.0.0 beta 1(也许是beta 2和RC也不知道),但在Qt 5.0.0最终版本中失败了.我只想参考Qt 5.0.0最终版本中看到的结果.所以很可能这与Qt5最近的变化有关.

在C++方面,我在命名空间中有一组类(QObject派生)(可选地用编译器标志触发;类在一个单独的库中,并且库将命名空间的使用作为选项留给用户使用图书馆).这里的一个类Game可能看起来像这样(摘录):

OAE_BEGIN_NAMESPACE

// forward-declarations:
class Player;    // Player is just another class in the same library

class Game : public QObject
{
    Q_OBJECT

public:
    explicit Game(...);

public slots:
    Player *player() const;  // <-- the quesion is about such slots
};

OAE_END_NAMESPACE
Run Code Online (Sandbox Code Playgroud)

这些宏OAE_BEGIN/END_NAMESPACE扩展为namespace OAE_NAMESPACE {...... }或者没有,就像Qt所做的那样<qglobal.h>,只是在宏名称中用"OAE"替换"QT":

#ifndef OAE_NAMESPACE

# define OAE_PREPEND_NAMESPACE(name) ::name
# define OAE_USE_NAMESPACE
# define OAE_BEGIN_NAMESPACE
# define OAE_END_NAMESPACE
# define OAE_BEGIN_INCLUDE_NAMESPACE
# …
Run Code Online (Sandbox Code Playgroud)

c++ qt moc qml qt5

16
推荐指数
1
解决办法
2030
查看次数

Qt5语法在QML中突出显示

我正在进行QtQuick 2.0演示,我想嵌入一些代码示例.是否可以轻松创建突出显示qml元素的语法.

您能否举例说明如何实现它的示例技术和想法.

谢谢

syntax-highlighting qml qt5 qtquick2

16
推荐指数
4
解决办法
4956
查看次数

Qt3D是Qt5的一部分吗?

我在Windows中安装了Qt5库,但Qt助手中没有关于Qt3D的文档.Qt3D是Qt5的一部分还是已从发行版本5中删除?

qt qt5 qt3d

15
推荐指数
2
解决办法
4943
查看次数

WebView谷歌地图在Qt5中平移/拖动

我目前正在将应用程序从Qt 4移植到Qt 5,并遇到WebView QML元素的一些问题.我可以成功将Google地图网页加载到WebView中,但该页面只响应单击或双击; 尝试单击拖动地图视图以平移可见区域无效.

以前,使用我的代码的Qt 4版本,我使用'pressGrabTime:0'WebView属性并欺骗用户代理以实现点击拖动功能.

我已经参考了Qt 5提供的MiniBrowser示例的源代码,它似乎生成模拟触摸事件以启用所需的功能.但是,示例代码使用了许多私有框架,我希望避免将其合并到我自己的代码中.

任何人都可以阐明为什么WebView元素不响应点击拖动事件,并建议一种克服这种情况的方法?

qtwebkit webview qt5

15
推荐指数
1
解决办法
819
查看次数

QListView选择因键盘活动而发生变化时发出信号?

我有一个QTialog,用QT Designer创建,看起来像这样: 对话

左侧的服务器列表是带有QStringListModel的QListView.通过将视图的激活(QModelIndex)信号连接到对话框中的插槽功能,鼠标单击列表视图中的项目将使用所选项目的信息更新表单.

但是,向上或向下按键盘也会更改所选项目,但不会发出任何信号,因此表单不会更新以匹配所选项目.怎么解决这个问题?

c++ qt qlistview qt5

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

将QML信号连接到C++ 11 lambda插槽(Qt 5)

将QML信号连接到常规C++插槽很容易:

// QML
Rectangle { signal foo(); }

// C++ old-style
QObject::connect(some_qml_container, SIGNAL(foo()), some_qobject, SLOT(fooSlot()); // works!
Run Code Online (Sandbox Code Playgroud)

但是,无论我尝试什么,我似乎都无法连接到C++ 11 lambda函数槽.

// C++11
QObject::connect(some_qml_container, SIGNAL(foo()), [=]() { /* response */ }); // fails...
QObject::connect(some_qml_container, "foo()", [=]() { /* response */ }); // fails...
Run Code Online (Sandbox Code Playgroud)

两次尝试都失败并出现函数签名错误(没有QObject :: connect重载可以接受这些参数).但是,Qt 5文档暗示这应该是可能的.

不幸的是,Qt 5示例总是将C++信号连接到C++ lambda插槽:

// C++11
QObject::connect(some_qml_container, &QMLContainer::foo, [=]() { /* response */ }); // works!
Run Code Online (Sandbox Code Playgroud)

这种语法不适用于QML信号,因为QMLContainer :: foo签名在编译时是未知的(并且手动声明QMLContainer :: foo会破坏首先使用QML的目的.)

我正在尝试做什么?如果是这样,QObject :: connect调用的正确语法是什么?

c++ qt signals-slots c++11 qt5

15
推荐指数
2
解决办法
5167
查看次数

Qt 5中的OpenGL与QOpenGL/QtOpenGL:差异和局限?

由于有两种方法可以将OpenGL与Qt 5(QOpenGL/QtOpenGL包装器和常规OpenGL API)一起使用,我想知道每种方法的局限性.有人可以告诉我是否应该注意QOpenGL包装器是否存在限制?

我问这个的原因是因为我不想开始使用QOpenGL包装器并发现我不能使用OpenGL API的全部功能.有没有人有这两方面的经验,可以在功能,性能和易用性方面提供一些提示?

opengl qt qt5

15
推荐指数
1
解决办法
9225
查看次数

Qt5 for Android:Project ERROR:QT中的未知模块:快速qml

我使用此链接的分步教程构建了Android版Qt5:为Android 构建Qt 5.

现在,我能够构建和部署QWidget应用程序到我的nexus 7.但是如果我尝试用给定的QtCreator 2.7.1模板构建QtQuick应用程序,我会收到以下错误:

Project ERROR: Unknown module(s) in QT: quick qml
Run Code Online (Sandbox Code Playgroud)

我完全按照教程中的描述完成了每个构建步骤.还有其他人遇到过这个错误吗?

android qml qt5 qt-necessitas

15
推荐指数
1
解决办法
4055
查看次数

Qt5 - 将背景颜色设置为QPushButton和QCheckBox

我正在尝试在Qt5中更改QAbstractButton(QPushButton或QCheckBox)的背景颜色并且没有运气.

这没有任何作用:

pButton->setAutoFillBackground(true);
QPalette palette = pButton->palette();
palette.setColor(QPalette::Window, QColor(Qt::blue));
pButton->setPalette(palette);
pButton->show();
Run Code Online (Sandbox Code Playgroud)

如果我尝试更改样式表:

pButton->setStyleSheet("background-color: rgb(255,255,0);");
Run Code Online (Sandbox Code Playgroud)

然后Qt举起双手,画出一个看起来很粗糙的块状按钮.

有一个标题为" 如何更改QWidget的背景颜色 "的页面,但它只讨论了这两种方法.

还有一个页面" Qt Style Sheets Examples "暗示如果你想改变背景颜色,你必须接管绘制按钮的所有方面,这看起来有点矫枉过正.

我需要这个在Mac,Windows和Ubuntu Linux上运行,如果我必须手动绘制关于按钮的所有内容3次(每个平台一次),这真的不是一件幸福的事情.

我错过了一些明显的东西吗

ps"背景颜色"是指按钮周围的区域,而不是按钮面上文本下的颜色.

qt qcheckbox qt5 qpushbutton

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

如何在Qt StyleSheet中只覆盖一个属性:值对

我正在OSX Mavericks上编写新手Qt5代码,并且想要覆盖给定小部件的StyleSheet的一个属性:值对.

如果我运行以下自包含的演示代码:

#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QPushButton>

int
main( int argc, char *argv[] ) {
    QApplication app( argc, argv );

    QMainWindow* mw = new QMainWindow();

    QPushButton* AButton = new QPushButton( "A Button", mw );

    mw->show();

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我得到了一个很好的按钮,默认为Macintosh风格 - 圆角,按下时标准OSX-蓝色等:

带有OSX默认值的QPushButton

但是,如果我设置样式表以使背景按钮颜色为红色,那么在此过程中我似乎失去了所有其他OSX样式默认值 - 没有更多的圆角,标准边距等:

#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QPushButton>

int
main( int argc, char *argv[] ) {
    QApplication app( argc, argv );

    QMainWindow* mw = new QMainWindow();

    QPushButton* AButton = new QPushButton( "A …
Run Code Online (Sandbox Code Playgroud)

qt qt5 qtstylesheets qpushbutton

15
推荐指数
2
解决办法
6178
查看次数