小编MBa*_*ach的帖子

如何在Qt5中创建/读/写JSon文件

Qt5有一个新的JSon解析器,我想使用它.问题在于,对于外行人的术语以及如何用它编写代码,它不是很清楚.那个或我可能读错了.

我想知道在Qt5中创建Json文件的代码以及"封装"的含义.

c++ qt json qt5

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

如何确保QTableView中的列调整为最大值

我不知道怎么问这个问题,所以,请随时询问更多信息.

似乎tableView->resizeColumnsToContents()只会根据当前视图中的数据调整所有列的大小.这意味着如果我有更多的数据(在单词数量方面更长),这些单词将被包装(如果wordWrap属性设置为true).

奇怪的是,如果我向下滚动到底部并刷新数据,tableView将正确调整这些列的大小.好像tableView不知道下面有更长的文字.

所以,我的问题是,如何根据所有数据确保将这些列调整为最大值?

我的代码

QSqlTableModel *model = new QSqlTableModel;
model->setTable("item");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();    
tableResult->setModel(model);    
tableResult->setEditTriggers(QAbstractItemView::NoEditTriggers);    
tableResult->setSelectionBehavior(QAbstractItemView::SelectRows);
tableResult->setSelectionMode(QAbstractItemView::SingleSelection);    
tableResult->resizeColumnsToContents();
tableResult->resizeRowsToContents();
Run Code Online (Sandbox Code Playgroud)

更新1

我试过了tableResult->scrollToBottom(),它只会根据底部的项目调整大小.所以,如果中间有较长的单词,那些单词就会被包裹起来.

更新2

如果有人想了解我在说什么,请下载此示例.您将看到单击PushButton将生成未正确调整大小的数据.

更新3

可能是一个错误:https://bugreports.qt.io/browse/QTBUG-9352

qt qtableview

28
推荐指数
3
解决办法
4万
查看次数

对于stl容器,end()是一个昂贵的操作

https://doc-snapshots.qt.io/qtcreator-extending/coding-style.html上,建议编写如下循环:

Container::iterator end = large.end();
for (Container::iterator it = large.begin(); it != end; ++it) {
        //...;
}
Run Code Online (Sandbox Code Playgroud)

代替

for (Container::iterator it = large.begin(); it != large.end(); ++it) {
        //...;
}
Run Code Online (Sandbox Code Playgroud)

由于我很少在任何代码中看到这种风格,我想知道end()的连续调用是否真的为stl容器上的大型循环添加了明显的运行时开销,或者编译器是否已经优化了这种情况.

编辑:许多非常好的评论指出:这个问题仅在循环内的代码不修改结束迭代器时才有效.否则,当然重复的结束呼叫是强制性的.

c++ performance containers stl

19
推荐指数
2
解决办法
1619
查看次数

在OSX上使用Qt 5.1构建项目时发出警告

尝试在Mac上构建Qt项目时,我收到两个警告(使用QtCreator).

警告:没有.qmake.cache.这使得makepec显着减慢了qmake的速度.警告:在顶级项目文件中调用'cache()'以解决此问题.

警告指示调用cache()顶级项目,但我没有找到任何关于我应该如何做的文档.

我看到qt上记录了一些错误

  1. https://bugreports.qt.io/browse/QTBUG-31340
  2. https://bugreports.qt.io/browse/QTBUG-30586

我知道这只是一个警告,但我有兴趣修复它.有没有解决方法来解决它?

qt warnings qt-creator qt5

11
推荐指数
1
解决办法
1710
查看次数

Qt安装程序框架:从卸载程序中删除单选按钮

我为我们的产品创建了一个简单的安装程序,只有一个组件,没有远程存储库管理器.

当我启动卸载程序时,介绍页面显示3个单选按钮:

  • 包经理

  • 更新组件

  • 删除所有组件

我只需要第三个,所以我检查了这个文档:

http://doc-snapshot.qt-project.org/qtifw-master/noninteractive.html

正如我已经理解并且无法隐藏按钮,我将其添加到我的install.qs文件中:

function Controller()
{
}

Controller.prototype.IntroductionPageCallback = function()
{
    gui.clickButton(buttons.NextButton);
}
Run Code Online (Sandbox Code Playgroud)

这应该在介绍页面上自动单击"下一步",以便它直接进入卸载页面.

什么都没发生,我在Controller功能中编写的内容,介绍页面显示了3个单选按钮.我在函数中添加了一些消息框,它们从未被调用过.

有人知道怎么解决吗?

qt uninstallation qt-installer

8
推荐指数
1
解决办法
2650
查看次数

如何在QObject :: connect中使用QMetaMethod

我有两个QObject子类实例和两个QMetaMethod信号实例,其中一个对象和另一个对象中的插槽.我想把这个信号和插槽相互连接起来.

我查看了qobject.h文件,发现SIGNAL()和SLOT()宏只是在方法签名的开头添加"1"或"2"字符,所以看起来应该可以添加相同的字符到QMetaMethod :: signature()返回的字符串的开头,但这种方法取决于一些未记录的工具包内部,并且可能随时被新版本的Qt破坏.

有没有人知道通过QMetaMethod反射表示连接信号和插槽的可靠方法?

编辑: 我在Qt问题跟踪器中创建了建议:https: //bugreports.qt.io/browse/QTBUG-10637 如果有人也对此功能感兴趣,您可以在那里投票支持此票.

c++ qt qt4

7
推荐指数
2
解决办法
4362
查看次数

QML Qt openUrlExternally

我刚刚在使用此代码时发现了奇怪的行为

Qt.openUrlExternally(someurl); 
Run Code Online (Sandbox Code Playgroud)

我想让我的用户打开facebook sharer url,但我无法使用此代码,因为它什么也没做.

在S60 5th和Symbian ^ 3设备(C5,C7,5230,N8)上测试

所以请告诉我(如果你知道的话)
1)这个组件/行为有什么问题吗?(我搜索并没有找到任何东西)
2)我怎样才能使C++组件做同样的事情?`(如果它是解决方案)

谢谢

编辑
我找到了使用QML可访问的方法创建C++组件的示例,请点击此处:http: //doc.qt.io/qt-4.8/qt-declarative-cppextensions-referenceexamples-methods-example.html

最终编辑

讨论导致制作错误报告,可在以下网址找到:https://bugreports.qt.io/browse/QTBUG-19201

谢谢大家

c++ qt symbian qml

7
推荐指数
2
解决办法
7255
查看次数

使用Qt和Boost时的链接器错误

当我在我的c ++项目中一起使用Qt(v4.7.4)和Boost(尝试v1.47和v1.48)时,我得到一个由包含的类引起的链接器错误<boost\filesystem.hpp>.我刚刚设置了Qt,在代码工作之前没有任何问题.

这是错误消息:

... obj:错误LNK2001:未解析的外部符号"private:static class std :: codecvt const*&__cdecl boost :: filesystem3 :: path :: wchar_t_codecvt_facet(void)"(?wchar_t_codecvt_facet @ path @ filesystem3 @ boost @@ CAAAPBV ?$ @的codecvt GDH @ STD @@ XZ)

... obj:错误LNK2001:未解析的外部符号"void __cdecl boost :: filesystem3 :: path_traits :: convert(char const*,char const*,class std :: basic_string,class std :: allocator>&,class std: :codecvt const&)"(?convert @ path_traits @ filesystem3 @ boost @@ YAXPBD0AAV?$ basic_string @ GU?$ char_traits @ G @ std @@ V?$ allocator @ G @ 2 @@ std …

c++ qt boost linker-errors visual-studio-2010

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

Qt5,Phonon和多媒体套件

我是Qt开发的新手,我在MacOSX上使用Qt5 Beta1.

在过去的两天里,我一直在阅读文档并寻找有关我所拥有的不同可能性的信息,以便实现一个窗口小部件,该窗口小部件显示与具体时刻相对应的视频帧.简而言之,这是一个很好的旧预览.首先,我认为,因为我不需要任何花哨的东西,Phonon将是正确的选择,因为它被称为"在更高层次上(比QTMultimedia更高),并且在许多情况下更适合应用程序开发人员." 我阅读了它的文档,甚至发现了一些可以帮助我开始的讨论,就像这样; http://www.qtcentre.org/threads/13221-QT-4-4-Phonon-Video-Rendering-a-single-frame.但是,当我试图自己制作东西时,我意识到我没有Phonon库.对此感到惊讶,我研究了Phonon和Qt5.所有的麻烦都开始了.

我开始阅读这样的对话:http://comments.gmane.org/gmane.comp.lib.qt.user/1581 或者这个:http://comments.gmane.org/gmane.comp.lib. qt.devel/3905或其他链接:https://bugreports.qt.io/browse/QTBUG-26471.我真的很困惑,不知道下载Phonon库是不是一个好主意,或者在一段时间之后它不会在Qt5上得到支持.因此我决定退后一步,再次考虑使用QTMultimedia而不是Phonon.我看了他们的VideoWidget示例http://doc.qt.io/qt-4.8/qt-multimedia-videowidget-example.html,当我试图运行它时,它抛出了几个错误(我发布的只是一个开头)输出):

In file included from ../VideoExample/videoplayer.cpp:43:
In file included from ../VideoExample/videowidget.h:44:
../VideoExample/videowidgetsurface.h:57:11: warning: 'VideoWidgetSurface::isFormatSupported' hides overloaded virtual function [-Woverloaded-virtual]
 bool isFormatSupported(const QVideoSurfaceFormat &format, QVideoSurfaceFormat *similar) const;
      ^
../../Downloads/qt-everywhere-opensource-src-5.0.0-beta1/qtbase/include/QtMultimedia/../../../qtmultimedia/src/multimedia/video/qabstractvideosurface.h:78:18: note: hidden overloaded virtual function 'QAbstractVideoSurface::isFormatSupported' declared here
virtual bool isFormatSupported(const QVideoSurfaceFormat &format) const;
             ^
../VideoExample/videoplayer.cpp:61:40: error: expected a type
 QAbstractButton *openButton = new QPushButton(tr("Open..."));
                                   ^
../VideoExample/videoplayer.cpp:62:6: error: no matching member …
Run Code Online (Sandbox Code Playgroud)

qt phonon qt5

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

如何使用QML Scale Element进行不同来源的增量缩放

我正在尝试使用QML Scale Element来围绕用户点击的点执行视图缩放,但它并不总是按照记录的方式工作.

要重现该问题,请运行下面的最小QML示例(我在Ubuntu 14.04 x86_64上使用Qt 5.3.1)然后:

  • 单击左上角蓝色矩形的中心.
  • 看到所有内容都按比例放大,但蓝色矩形的中心仍保留在您的点击位置.这是在http://doc.qt.io/qt-5/qml-qtquick-scale.html中记录的 - "[原点]保持项目缩放的点(即,保持固定的点)相对于父项,随着项目的其余部分增长)."
  • 现在单击红色矩形的中心.
  • 看到所有内容都按比例放大,但红色矩形的中心没有保留在您的点击位置,它被向上和向左平移.这不是记录在案的.

我的目标是让它始终正确缩放,将点击点保持为原点,如文档中所述.

PS有趣的是,如果您现在再次点击红色矩形的中心,它会按照承诺在该点附近放大.现在再次单击蓝色矩形的中心,您会看到相同的意外翻译行为.

PPS我正在开发一个应用程序,用户可以在包含矩形的任何地方鼠标滚动/捏住,内部的所有内容都应该在鼠标/捏合位置周围向上或向下缩放.许多应用程序都有这种行为.参见例如inkscape.

import QtQuick 2.2
import QtQuick.Controls 1.1

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Rectangle {
        x: 100
        y: 100
        width: 300
        height: 300

        transform: Scale {
            id: tform
        }

        MouseArea {
            anchors.fill: parent
            onClicked: {
                console.log(mouse.x + " " + mouse.y)
                tform.xScale += 0.5
                tform.yScale += 0.5
                tform.origin.x = mouse.x
                tform.origin.y = mouse.y
            }
        } …
Run Code Online (Sandbox Code Playgroud)

qt qml qt-quick

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