标签: qt4

带有QString类型的C++中的switch/case语句

我想在我的程序中使用switch-case但编译器会生成错误.我如何使用该switch语句QString

编译器给我这个错误:

switch expression of type 'QString' is illegal
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

bool isStopWord( QString word )
{
bool flag = false ;

switch( word )
{
case "the":
    flag = true ;
    break ;
case "at" :
    flag = true ;
    break ;
case "in" :
    flag = true ;
    break ;
case "your":
    flag = true ;
    break ;
case "near":
    flag = true ;
    break ;
case "all":
    flag = true ;
    break ;
case …
Run Code Online (Sandbox Code Playgroud)

c++ qstring qt qt4 switch-statement

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

与Qt 4.8相比,为什么FlowLayout在Qt 5.2中的表现不同?

我刚刚将我的应用程序从Qt 4.8.4移植到Qt 5.2.1.我在Qt文档FlowLayout中的FlowLayout示例代码中提供了类的问题.

我有QMainWindow一个QDockWidget停靠在中央部件的底部.该QDockWidgetFlowLayout几个子部件.在Qt 4.8中,这就像一个魅力,儿童小工具的大小符合标准尺寸DockWidget.但是,在Qt 5.2中,DockWidget尝试将其大小增加到最大值(从中央小部件取代).更改其布局可防止此不良行为.但当然,我FlowLayout是故意使用的.

为了说明这个问题,我创建了一个最小的例子:

构造函数DockWidget:

    QGroupBox *generalBox = new QGroupBox("");
    generalBoxLayout = new FlowLayout;
    generalBox->setLayout(generalBoxLayout);

    for(int i=0; i<10; ++i)
    {
        QPushButton *button = new QPushButton("Test", this);
        button->setMinimumWidth(100);
        button->setMinimumHeight(100);
        generalBoxLayout->addWidget(button);
    }

    this->setWidget(generalBox);
Run Code Online (Sandbox Code Playgroud)

有人知道问题是什么以及我如何解决它?

编辑 我创建了一个新的最小工作示例,遗憾的是无法重现Qt 4.8和Qt 5.2之间的差异.同样的问题出现在Qt 4.8中,所以我仍然想在这里介绍它:

显示底部停靠的dockwidget占据整个垂直空间的初始视图: 显示底部停靠的dockwidget的初始视图

使用鼠标调整dockwidget的大小后查看 使用鼠标调整dockwidget的大小后查看

使用鼠标调整主窗口大小后查看 使用鼠标调整主窗口大小后查看

这些屏幕截图显示,在手动更改dockwidget的大小后,dockwidgets的行为与预期一致.但是,在初始化时,窗口小部件从中央窗口小部件获取所有可用空间,这是不希望的.

有人知道解决方案/解决方法吗?

qt qt4 flowlayout qdockwidget qt5

26
推荐指数
1
解决办法
2108
查看次数

如何确定Qt在运行时运行的平台?

是否有(Qt)方法来确定Qt应用程序在运行时运行的平台?

qt cross-platform qt4

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

QTableView在每个单元格中都有不需要的复选框

我刚刚开始使用Qt编程,我正在尝试使用一个QTableView控件来创建一个简单的表格数据布局,该控件具有继承自己的创建的模型类QAbstractTableModel.出于某种原因,我的表视图最终看起来像这样:

alt text http://users.nerdland.net/tyler/files/pics/qtableview_checkboxes.png

什么在每个单元格中看起来像复选框(但在我点击它们时什么也不做)的东西,我怎么让它们消失?QTableView除了对象的名称,我没有更改任何属性.

如果重要的话,我的模型代码很简单:

MyTableModel::MyTableModel(QObject* parent)
  : QAbstractTableModel(parent)
{
}

MyTableModel::~MyTableModel()
{
}

int MyTableModel::rowCount(const QModelIndex& parent) const
{
  return 1000; 
}

int MyTableModel::columnCount(const QModelIndex& parent) const
{
  return 5;
}

QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
  return "Foo";
}
Run Code Online (Sandbox Code Playgroud)

对话框UI在Qt Designer中构建,在对话框的类中,我将模型附加到视图,如下所示:

MyTableModel testModel = new MyTableModel(this);
ui.testTable->setModel(testModel);
Run Code Online (Sandbox Code Playgroud)

除此之外,我不执行任何操作ui.testTable.

使用Qt 4.6.

c++ qt qt4 qtableview

25
推荐指数
1
解决办法
5780
查看次数

如何在Qt中模拟用户交互(按键事件)?

我需要在Qt中模拟"输入"键事件.我怎样才能做到这一点?

qt qt4 keyevent

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

在"使用调试信息发布"模式下构建Qt?

有没有办法在"Release with Debug info"模式下构建Qt?我的应用程序仅在"发布"模式下崩溃(在调试模式下工作正常),似乎问题来自Qt(可能是Qt中的错误).所以我想看看Qt的调试信息.

Qt docs有"debug","release"但不是"release with debug"模式.

[Upate]

我的应用程序适用于Mingw 32位Release/Debug和VSC++ Compiler 64bit Debug.

仅在VSC++ 64Bit Release上崩溃

有小费吗 ?

c++ qt qmake qt4

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

如何在Windows 7上使用ruby 1.9.2运行Qt4?

摘要

我正在使用Qt4编写一个Ruby 1.9.2应用程序用于GUI,我想在Linux,OS X和Windows上分发它.除了我的Windows 7 64位盒子外,我的应用程序运行正常.

有Win7 + Qt4 + 1.8.7的工作示例,但显然不是Win7 + Qt4 + 1.9.2.有两种宝石的Ruby-QT绑定,qtbindingsqtruby4(有时被称为qt4-qtruby),但我还没有看到任何人使用Ruby 1.9.2 Win7上运行.

问题 qtruby4

这篇文章从2008年10月开始,它的更新版本从2011年6月起作为很好的起点,但是我通过RubyInstaller for Windows的下载页面安装Ruby 1.9.2与后者不同.1.8.7似乎工作正常,但是当我用1.9.2尝试时,我得到了一些不寻常的错误.要求'rubygems'然后要求'Qt'结果:

no such file to load -- 'qtruby4'
Run Code Online (Sandbox Code Playgroud)

上面的第一篇文章链接到dr1ku的一篇更深入的文章,可能会提供一些线索.

  • 使用这些库的最新版本重现dr1ku的步骤可能是值得的.
  • dr1ku和2008 paschenda.org文章都使用了一个特殊的Windows Qt4-QtRuby安装程序,但维护者指出他没有时间更新它.我并不完全清楚特殊安装程序的功能,但我认为paschenda.org的2011年文章不再使用它,因为DevKit表面上可以帮助RubyGems自己构建Qt4而无需帮助.

在野外发现

以下是一些似乎遇到同样问题的人:

问题 qtbindings

我的应用程序实际上使用的qtbindings宝石,所以我尝试安装该相反,与gem install qtbindings --platform=mswin32[1]然而,当我试图,require 'Qt' …

ruby qt4 qtruby windows-7 ruby-1.9

24
推荐指数
1
解决办法
8771
查看次数

PyQT打开一个带有JS警报弹出的网页将获得SegFault.如何解决?

我正在学习PyQT编程,当我尝试一个简单的测试时,我得到了Segmentation错误,这是我的代码pop.py:

#! /usr/bin/python

import sys
from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QUrl
from PyQt4.QtWebKit import QWebView

app = QApplication(sys.argv)
v = QWebView()
v.load(QUrl("http://127.0.0.1/j.html"))
v.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)

我在127.0.0.1启动了一个Apache服务器进行测试.这是j.html:

<html><script>alert("I am here");</script>
<body>Hello World</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我启动pop.py,打开一个窗口,javascript弹出警告对话框,我点击确定,然后pop.py将完全得到"分段错误"

我试过PySide,得到相同的结果.如果不是在HTML中的JS警报,那就OK了.这是QT的错误还是我错过了什么?

我使用python 2.6.6,python-qt4 4.8.3,libqtwebkit4 2.1.0开发Debian

我也尝试过Fedora 15和PyQt4-4.8.3,python 2.7.1,同样的问题

任何建议,搜索的线索都会有所帮助.谢谢

javascript python qt4 pyqt

24
推荐指数
1
解决办法
1001
查看次数

如何在qmake中指定Mac平台(QtCreator)

我想pro通过QtCreator 为文件中的Mac OS设置一些配置.我阅读了该文档,发现它支持Windows和Unix,如下所示,

 win32 {
     SOURCES += hellowin.cpp
 }
 unix {
     SOURCES += hellounix.cpp
 }
Run Code Online (Sandbox Code Playgroud)

我知道Mac OS是类似nix的操作系统,但是,我仍然希望与Linux有所不同.有没有办法做到这一点?


Ubuntu + Qt5.1

macos qt qmake qt4 qt5

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

如何找到Qt的版本?

我怎么知道我使用的是哪个版本的Qt?当我打开Qt Creator时,它显示"欢迎来到Qt Creator 2.3".但是,在构建设置中,它显示Qt Version 4.7.1.

qt4 pyqt qt-creator qtcpsocket qtcore

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