标签: qt5

没有安装qmlviewer

我已经安装了Qt SDK 5.0.0 beta 2和Qt Creator 2.6.0.它会检测到包,但会发出"未安装qmlviewer"的警告.我找了它,它在SDK bin文件夹中.我能做什么?我使用ubuntu 12.04并将SDK二进制文件添加到PATH中.我可以通过终端查看QML文件.

qt qt-creator qml qt5

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

Qt qrc资源文件 - 无法加载图标

我有一个Qt5桌面项目,我在Qt Creator编辑器中添加了一个"resource.qrc"文件,该文件在项目的.pro文件中创建了以下行:

RESOURCES = resource.qrc
Run Code Online (Sandbox Code Playgroud)

我放了一个空白前缀和一个png文件(14x14),我试着像这样使用它:

QPixmap pixmap = QPixmap ("://my_image.png");
ui->combobox->addItem(QIcon(pixmap), "itemname");
Run Code Online (Sandbox Code Playgroud)

问题是:图标不会出现!

以下作品:

QPixmap pixmap(14,14);
pixmap.fill(QColor("red"));
ui->combobox->addItem(QIcon(pixmap), "itemname");
Run Code Online (Sandbox Code Playgroud)

所以问题必须在资源嵌入过程中..我注意到生成的"exe"里面没有资源部分...我没有静态链接的外部库,所以我认为我不需要Q_INIT_RESOURCE(资源)宏(它给我未定义的外部)

更新:我在这里发布我的qrc文件:

<RCC>
    <qresource prefix="/">
        <file>my_image.png</file>
    </qresource>
</RCC>
Run Code Online (Sandbox Code Playgroud)

它非常简单,我不明白为什么在运行时图标没有出现

c++ icons qt qt5 qicon

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

你如何将QUrl addQueryItem移植到Qt5的QUrlQuery?

Qt4,使用下面的代码QUrl工作:

QUrl u;
foreach (const settings::PostItem & pi, settings.post)
    u.addQueryItem(pi.name, pi.value);
postData = u.encodedQuery();
Run Code Online (Sandbox Code Playgroud)

注意:此代码来自wkhtmltopdf并且postData是QByteArray.

但是,Qt5不再具有该addQueryItem()功能.你如何移植这段代码?

qt qurl qt5

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

即使忽略QCloseEvent,也会隐藏窗口

我目前正在尝试将我的Qt应用程序移植到Mac OSX,只是遇到了以下问题:

我的一个窗口类(派生自QMainWindow)在按下关闭按钮时显示一个对话框,您可以在其中保存/放弃更改或中止.这是通过重新实现closeEvent来完成的,如下所示:

void ResultsWindow::closeEvent(QCloseEvent* event)
{
    if (isWindowModified())
    {
        activateWindow();
        QMessageBox::StandardButton button = QMessageBox::warning(
                this,
                APPLICATION_NAME,
                "Warning: data have been modified. Do you want to save the "
                    "changes?",
                QMessageBox::Save | QMessageBox::Discard | QMessageBox::Abort,
                QMessageBox::Abort);
        switch (button)
        {
            case QMessageBox::Save:
                if (!Save())
                {
                    event->ignore();
                    return;
                }
                break;
            case QMessageBox::Discard:
                break;
            case QMessageBox::Abort:
            default:
                event->ignore();
                return;
        }
    }
    event->accept();
}
Run Code Online (Sandbox Code Playgroud)

预期的行为如下:如果单击"中止",则忽略该事件并且窗口保持打开状态.这在Linux和Windows上按预期工作.但是,在OSX上,窗口是隐藏的,但在后台仍然有效.我在这里错过了什么?如何确保窗户保持打开状态?

更新: 我不知何故认为这是Qt5的一个问题.如果该closeEvent方法只包含event->ignore();窗口仍然关闭.我不认为这是预期的行为.也许我应该把这个问题发布到Qt邮件列表......

更新:这是Qt中的一个错误,自5.1版本开始解决.

c++ macos qt qt5

12
推荐指数
1
解决办法
1353
查看次数

没有QtCreator,exe文件不会运行

为Windows 32位安装了Qt 5.0.1(MinGW 4.7,823 MB)

然后我创建了简单的Quick 2应用程序并编译它.应用程序位于其文件夹中,并且应用程序从QtCreator运行.我想在没有QtCreator的情况下运行这个exe文件.为此,我从C:\ Qt\Qt5.0.1\5.0.1\mingw47_32\bin复制文件:

  1. Qt5Core.dll
  2. icuin49.dll
  3. libgcc_s_sjlj-1.DLL
  4. libwinpthread-1.DLL
  5. libGLESv2.dll
  6. 的libstdc ++ - 6.dll
  7. qminimal.dll
  8. Qt5Gui.dll
  9. Qt5Network.dll
  10. Qt5Qml.dll
  11. Qt5Quick.dll
  12. Qt5V8.dll
  13. qwindows.dll

然后我得到错误:

Точкавходавпроцедуру_ZN6icu_4910CharString15getAppendBufferEiiRiR10UErrorCodeненайденавбиблиотекеDLIicuuc49.dll

翻译:

在库DLL icuuc49.dll中找不到过程入口点_ZN6icu_4910CharString15getAppendBufferEiiRiR10UErrorCode

如果我将exe文件复制到文件夹C:\ Qt\Qt5.0.1\5.0.1\mingw47_32\bin(其中都是dll),程序运行,但没有显示.

如果我将exe文件复制到文件夹C:\ Qt\Qt5.0.1\Tools\QtCreator\bin(其中都是dll),程序不会运行.

该怎么办?程序运行的位置和库是什么?

解决了.C:\ Qt\Qt5.0.1\5.0.1\mingw47_32\bin中的最终库列表:

  1. icuin49.dll
  2. icuuc49.dll
  3. libEGL.dll
  4. libgcc_s_sjlj-1.DLL
  5. libGLESv2.dll
  6. 的libstdc ++ - 6.dll
  7. libwinpthread-1.DLL
  8. Qt5Core.dll
  9. Qt5Gui.dll
  10. Qt5Network.dll
  11. Qt5Qml.dll
  12. Qt5Quick.dll
  13. Qt5V8.dll

我忘了添加qml文件的文件夹.

qt qml qt-quick qt5 qtquick2

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

在Qt中向Info.plist添加条目

在Qt中,可以指定Info.plist在Mac上构建时要使用的文件,如下所示:

QMAKE_INFO_PLIST = MyInfo.plist
Run Code Online (Sandbox Code Playgroud)

这将Qt自动生成的Info.plist文件替换为另一个.

而不是完全替换Qt的自动生成的,是否可以添加单个条目?

我不认为它会带来什么实际差别,但我希望能够做到这一点,因为我觉得添加我想要的其他项目而不是粗暴地替换整个文件会更"整洁".

qt info.plist qt5

12
推荐指数
1
解决办法
3242
查看次数

cmake找不到qt 5.1.1

我刚刚为Windows 32位(MinGW 4.8,OpenGL)安装了Qt 5.1.1,并尝试将其添加到我的cmake中.但是CMake只是不想找到它,我不知道为什么.我错过了什么?我需要设置环境变量吗?

这是我的cmake:

cmake_minimum_required( VERSION 2.8.11 )
PROJECT(Blemmer)
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
# Detect and add SFML
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules" ${CMAKE_MODULE_PATH})

set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
find_package(SFML REQUIRED system window graphics network audio)
# The QUIET option disables messages if the package cannot be found. 
FIND_PACKAGE(Qt5Widgets) 
add_subdirectory(Entity)
add_subdirectory(Engine)
add_subdirectory(Game)
add_executable(Blemmer main.cpp)

include_directories(${SFML_INCLUDE_DIR} ${PROJECT_SOURCE_DIR})
target_link_libraries(Blemmer ${SFML_LIBRARIES} Game Engine Qt5::Widgets)
Run Code Online (Sandbox Code Playgroud)

这是cmake-gui的输出:

CMake …
Run Code Online (Sandbox Code Playgroud)

c++ qt cmake qt5 qtwidgets

12
推荐指数
3
解决办法
5万
查看次数

如何在QML中制作可调整大小的矩形?

我正在寻找一种简单的方法来创建一个矩形QQuickItem.我想调整大小,并像这样拖动这个矩形的边框(在resizable中QRubberBand找到)

在此输入图像描述

有人有想法吗?

qt qml qt5 qtquick2 qquickitem

12
推荐指数
1
解决办法
7544
查看次数

Qt 5,在屏幕上获取鼠标位置

首先,我想提一下,我发现相关文章如何在Qt屏幕上获取鼠标位置?但它对我来说"只是没用".我做了一些测试,结果没有按照我的预期发挥作用,所以我决定发一个新帖子谈谈我做的测试,并找到一个替代解决方案.

这是我用来进行测试的代码:

QScreen *screen0 = QApplication::screens().at(0);
QScreen *screen1 = QApplication::screens().at(1);

printf("screen0 %s \n", screen0->name().toStdString().c_str());
printf("screen1 %s \n", screen1->name().toStdString().c_str());

// Position on first screen.
QPoint pos0 = QCursor::pos(screen0);

// Position on second screen.
QPoint pos1 = QCursor::pos(screen1);

printf("pos 0: %d, %d \n", pos0.x(), pos0.y());
printf("pos 1: %d, %d \n", pos1.x(), pos1.y());

// Get position without screen.
QPoint pos = QCursor::pos();
printf("pos: %d, %d \n", pos.x(), pos.y());
Run Code Online (Sandbox Code Playgroud)

我期待的是,只有一个屏幕会返回一个有效位置,因为光标只在一个屏幕上,而不在两个屏幕上.但情况并非如此,两个位置(pos0pos1)具有完全相同的值,正如我们在输出中看到的那样:

screen0 DVI-D-0 
screen1 HDMI-0 
pos 0: 1904, 1178 …
Run Code Online (Sandbox Code Playgroud)

c++ qt multiscreen qt5

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

如何使用Qt5 C++中的QMediaRecorder从QImage序列生成视频文件

基本上我想要的是QMediaRecorder通过提供QImage我在运行时在自定义代码中生成的s 序列作为源来编码视频.

到目前为止,我没有发现任何简单的方法来做到这一点,并在解决方案的所有点,我必须以某种方式实现自己的子类QMediaService和/或QMediaControl这需要QImage作为输入,将它们注册并以某种方式让QMediaRecorder使用它们.但是根据关于这个主题的官方Qt文档中的这个页面,这是一条较少旅行的道路,我自己:

通常,实施QMediaService不在本文档的范围之内,应寻求相关邮件列表或IRC渠道的支持.

我在这篇文章中希望拥有这些知识的人可以了解如何做到这一点.我认为记录这组功能将为Qt5的用户开辟许多有用的可能性.

c++ video-encoding qt5 qmediarecorder qmediaservice

12
推荐指数
1
解决办法
465
查看次数