Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Qt (Trolltech Qt, Nokia Qt, Digia Qt)

Автор: Zumaic
Дата сообщения: 03.04.2009 15:00
JFK2005
Чтож, спасибо. Использование 3д в 2д должно быть быстрым, если все грамотно реализовано, надо пробовать
а GDI+ задолбал, хотя вон codejock, который наверняка использует именно его, умудряется достаточно быстро прорисовываться, интересно как.
Автор: VVS89
Дата сообщения: 17.04.2009 20:41
Есть ли какой-нибудь способ поставить под виндой qt sdk (полную, с creator'ом), не имея админских прав?
Пробовал тупо инсталлятором, получил ошибку "Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка ..." при запуске creator'а.
мб надо что-то в окружении прописать?
в идеале хотелось бы что-то типа portable-версии на флешку
ПС:
а что значит эта ошибка? либу какую-то найти не может?
Автор: JFK2005
Дата сообщения: 17.04.2009 22:40
VVS89

Цитата:
а что значит эта ошибка? либу какую-то найти не может?

Не установлен Visual C++ 2005 Redistributable 2005 или 2008.

Установить эти библиотеки можно только под правами админа.

Альтернативный вариант - собрать Qt и Creator без привязки к WinSxS:

Цитата:
Необходимо пропатчить библиотеку msvcr90.dll, прописав mov eax,1 / ret по адресу 0x21BE0. ( По этому адресу располагается начало функции _check_manifest, от которой, собственно - всё зло ).

В общем, для msvcr90.dll прописываем hex-редактором комбинацию байт B8 01 00 00 00 C3 по адресу 0x21BE0 (для msvcr80.dll соответствующим адресом будет 0x1D76). Компилим проект без манифеста, бросаем dll'ки в папку с программой... всё, как в старые, добрые времена. Запускаем программу, всё работает без manifest hell и vc redist'ов.

edit:

Проверено на билдах 8.0.50727.3053, 9.0.21022.8, 9.0.30729.1. Адрес _check_manifest не меняется в пределах одной версии vc++ runtime. Если он изменится в будущих билдах, не составит никаких трудов его найти. Находим первый вызов GetSystemDirectoryW, затем поднимаемся немного выше до начала функции (mov edi,edi / push ebp).

Само собой, для использования исправленной crt в Qt-приложениях придётся перекомпилировать Qt, прописав в файле mkspecs\win32-msvc2008\qmake.conf в строке QMAKE_LFLAGS дополнительный ключ /MANIFEST:NO.

Цитата:
Пересобрал Qt 4.4.3 следующим образом:

- удалил всё содержимое из файлов embed_manifest_dll.prf и embed_manifest_exe.prf (они лежат в Qt\4.4.3\mkspecs\features\win32\);
- в qmake.conf прописал QMAKE_LFLAGS = /NOLOGO /MANIFEST:NO (файл находится в директории Qt\4.4.3\mkspecs\win32-msvc2008\);
- запустил configure / nmake.

Сделал пробный Qt-проект из одного диалога, в настройках указал Generate Manifest: No и Embed Manifest: No. В папку с скомпилированным exe-файлом положил QtCore4.dll, QtGui4.dll, msvcp90.dll и пропатченный msvcr90.dll.

Всё работает без установки VC++ Redist - проверено на чистой WinXP SP3.

Метод успешно опробован и работает.
Автор: Kyo
Дата сообщения: 09.06.2009 07:09
Может у кого есть библиотеки или примеры работы с форматами pdf и doc на третем QT?
Автор: KADABRA
Дата сообщения: 25.06.2009 14:52
Вышла Qt 4.5.2. Changelog.
Автор: substrackto
Дата сообщения: 24.12.2009 20:03
Без студии можно собрать qt с intel compiler?
Я пробовал 4.6.0 и 11.1.054, но пишет что не найден nmake, вручную доставил нмейк - вылазят ошибки.
Автор: JFK2005
Дата сообщения: 24.12.2009 20:24
substrackto

Цитата:
Без студии можно собрать qt с intel compiler?

Компилятор Intel C++ изначально предназначен для работы в связке с Visual Studio. Т.е. ответ на ваш вопрос - нет, без студии Qt собрать не получится.
Автор: karakurt2
Дата сообщения: 24.12.2009 20:54
substrackto
Без студии собрать можно всё, что заблагорассудится. Скорее всего, ошибка в наборе командной строки.
Автор: JFK2005
Дата сообщения: 24.12.2009 21:05
karakurt2
Поведайте миру секрет, каким образом можно собрать Qt интеловским компилятором под Windows без утилиты nmake.exe, которая поставляется вместе с Visual Studio...

Цитата:
Скорее всего, ошибка в наборе командной строки.

Само собой, перед запуском nmake нужно сделать

Код: configure -platform win32-icc
Автор: substrackto
Дата сообщения: 24.12.2009 21:19
Я качал с сайта мс nmake 1.5. Дописал путь к ней в path.
запускаю: configure -platform win32-icc -debuge-and-release

Цитата:

Creating qmake...

Microsoft (R) Program Maintenance Utility Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

icl -c -Foproject.obj -W3 -nologo -O2 -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -
Igenerators\symbian -IE:\programs\qt\200905\qt\include -IE:\programs\qt\200905\qt\include\QtCore -IE:\programs\qt\2009
05\qt\include -IE:\programs\qt\200905\qt\include\QtCore -IE:\programs\qt\200905\qt\src\corelib\global -IE:\programs\qt
\200905\qt\src\corelib\xml -IE:\programs\qt\200905\qt\mkspecs\win32-icc -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_
LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP -DQT_BUILD_QMAKE -DQT_NO_THREAD -D
QT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_NO_PCRE -DQT_BOOTSTRAPPED /Zc:forScope project.cpp
'icl' is not recognized as an internal or external command,
operable program or batch file.
NMAKE : fatal error U1077: 'C:\Windows\system32\cmd.exe' : return code '0x1'
Stop.

Microsoft (R) Program Maintenance Utility Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

del qbitarray.obj
Could Not Find E:\programs\qt\200905\qt\qmake\qbitarray.obj
del qbuffer.obj
Could Not Find E:\programs\qt\200905\qt\qmake\qbuffer.obj
del qcryptographichash.obj
Could Not Find E:\programs\qt\200905\qt\qmake\qcryptographichash.obj
del qlinkedlist.obj
Could Not Find E:\programs\qt\200905\qt\qmake\qlinkedlist.obj
del qfsfileengine.obj
Could Not Find E:\programs\qt\200905\qt\qmake\qfsfileengine.obj
del qfsfileengine_iterator.obj
Could Not Find E:\programs\qt\200905\qt\qmake\qfsfileengine_iterator.obj
del qbytearray.obj
Could Not Find E:\programs\qt\200905\qt\qmake\qbytearray.obj
Автор: JFK2005
Дата сообщения: 24.12.2009 21:27
substrackto
Ваш nmake выпущен 15 лет назад...

Цитата:
Microsoft (R) Program Maintenance Utility Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

Самый простой выход - скачать бесплатную версию студии, и взять свежий nmake оттуда.

Цитата:
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
Автор: substrackto
Дата сообщения: 24.12.2009 21:35
Только что попробовал:

Цитата:
Creating qmake...

Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.

icl -c -Foproject.obj -W3 -nologo -O2 -I. -Igenerators -Igenerators\un
ix -Igenerators\win32 -Igenerators\mac -Igenerators\symbian -IE:\Programs\Qt\20
0905\qt\include -IE:\Programs\Qt\200905\qt\include\QtCore -IE:\Programs\Qt\2009
05\qt\include -IE:\Programs\Qt\200905\qt\include\QtCore -IE:\Programs\Qt\200905
\qt\src\corelib\global -IE:\Programs\Qt\200905\qt\src\corelib\xml -IE:\Program
s\Qt\200905\qt\mkspecs\win32-icc -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_
LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG
_CPP -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_
NO_DATASTREAM -DQT_NO_PCRE -DQT_BOOTSTRAPPED /Zc:forScope project.cpp
icl: warning #10114: Microsoft Visual C++ not found in path
project.cpp
E:\Programs\Qt\200905\qt\include\QtCore/../../src/corelib/global/qglobal.h(45):
catastrophic error: could not open source file "stddef.h"
#include <stddef.h>
^

compilation aborted for project.cpp (code 4)
NMAKE : fatal error U1077: 'E:\Programs\Intel\Compiler\11.1\054\Bin\ia32\icl.EXE
' : return code '0x4'
Stop.

Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.

del qbitarray.obj
Could Not Find E:\Programs\Qt\200905\qt\qmake\qbitarray.obj
del qbuffer.obj
Could Not Find E:\Programs\Qt\200905\qt\qmake\qbuffer.obj
del qcryptographichash.obj
Could Not Find E:\Programs\Qt\200905\qt\qmake\qcryptographichash.obj
Автор: JFK2005
Дата сообщения: 24.12.2009 21:46
substrackto

Цитата:
E:\Programs\Qt\200905\qt\include\QtCore/../../src/corelib/global/qglobal.h(45):
catastrophic error: could not open source file "stddef.h"
#include <stddef.h>

Т.е. не найден заголовочный файл stddef.h, который поставляется вместе с Visual C++.

У меня переменные окружения настроены так:

Цитата:
INCLUDE=C:\VS9\VC\ATLMFC\INCLUDE;C:\VS9\VC\INCLUDE;C:\Program Files\Microsoft SDKs\Windows\v6.0A\include;c:\Qt\451\include\Qt

LIB=C:\VS9\VC\ATLMFC\LIB;C:\VS9\VC\LIB;C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib;C:\Qt\451\lib

Path=C:\VS9\Common7\IDE;C:\VS9\VC\BIN;C:\VS9\Common7\Tools;C:\Windows\Microsoft.NET\Framework\v3.5;C:\Windows\Microsoft.NET\Framework\v2.0.50727;C:\VS9\VC\VCPackages;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;C:\ICC\Compiler\11.1\035\tbb\ia32\vc9\bin;C:\ICC\Compiler\11.1\035\tbb\ia32\vc8\bin;C:\ICC\Compiler\11.1\035\ipp\ia32\bin;C:\ICC\Compiler\11.1\035\lib\ia32;C:\ICC\Compiler\11.1\035\mkl\ia32\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Qt\451\bin;C:\Program Files\Microsoft SQL Server\90\Tools\bin\;C:\Program Files\TortoiseSVN\bin

QMAKESPEC=win32-icc
QTDIR=C:\Qt\451

Файл stddef.h находится в директории C:\VS9\VC\INCLUDE, поэтому необходимо указать путь к ней в переменной окружения INCLUDE. В поставку VC++ входит батник vcvarsall.bat, который прописывает пути и переменные окружения автоматически.
Автор: Jokerjar79
Дата сообщения: 03.01.2010 10:26
Всем привет. У меня следующий вопрос: qt 4.5.2, есть виджет QTabWidget. Но у него на каждую вкладку создается виджет для размещения других виджетов на этой вкладке. Мне нужно, чтобы вкладок было много, а содержимое на них всех одно. Пришло в голову либо переопределять некоторые методы QTabWidget - addTab и т.п. либо самому строить из QTabBar и чего-нибудь еще в качестве панели. Но может есть более простые пути?
Автор: KADABRA
Дата сообщения: 04.01.2010 12:12
Jokerjar79

Цитата:
Мне нужно, чтобы вкладок было много, а содержимое на них всех одно.

Посколько содержимое одно, то и QTabWidget не нужен. Просто, как вы уже написали, QTabBar использовать.
Автор: Jokerjar79
Дата сообщения: 04.01.2010 15:52
KADABRA, вручную "связать" виджеты QTabBar и, допустим, QFrame (в качестве контейнера контента) тоже непросто. QTabWidget выглядит примерно так:



Видно, что виджет, выступающий в качестве контейнера контента имеет закругленные углы, кроме левого верхнего угла, где расположены вкладки. Там идет плавное продолжение, также отсутствует граница между активной вкладкой и этой панелью. На макинтоше QTabWidget выглядит вообще вот так:



В общем, думаю, чтобы решить мою задачу, нужно переписывать QTabWidget (именно переписывать, а не создавать потомка на основе, т.к. там слишком много лишнего)
Автор: substrackto
Дата сообщения: 06.01.2010 23:24
В Qt Designer можно всунуть виджет в тулбар или статусбар?

Вручную то делается (addWidget), а в Designer никак немогу. Пробовал выстаривать HBoxLayout => morph into QWidget, но нельзя всунуть.
Автор: KADABRA
Дата сообщения: 10.01.2010 02:24
Jokerjar79

Цитата:
вручную "связать" виджеты QTabBar и, допустим, QFrame (в качестве контейнера контента) тоже непросто. QTabWidget выглядит примерно так:

Понял, сначала не заметил этой разницы.

Цитата:
В общем, думаю, чтобы решить мою задачу, нужно переписывать QTabWidget (именно переписывать, а не создавать потомка на основе, т.к. там слишком много лишнего)

Можно и так и так. Лишнее можно не пререписывать, а просто не использовать. Но это уже дело вкуса.
Автор: joktar
Дата сообщения: 11.01.2010 21:12
А вот вопрос-если разрабатывать под Windows а потом портировать под MacOS X
(используем только штатные компоненты Qt) - сильно будет отличатся внешний вид и поведение от родных маковских программ?
Автор: mickolam2004
Дата сообщения: 12.01.2010 12:49

Цитата:
будет отличатся внешний вид

должен быть один-к-одному с маком... а под виндой можно менять интерфейс по желанию.
Автор: substrackto
Дата сообщения: 15.01.2010 12:36
А можно ли вызывать произвольную функ на подобии: QMetaObject::invokeMethod( obj, met );
invokeMethod вызывает только сигналы или слоты.
Автор: KADABRA
Дата сообщения: 16.01.2010 16:55
substrackto

Цитата:
А можно ли вызывать произвольную функ на подобии: QMetaObject::invokeMethod( obj, met );
invokeMethod вызывает только сигналы или слоты.

Qt не предоставляет таких возможностей.
Автор: brRamires
Дата сообщения: 11.03.2010 19:32
Что-то не компилируется у меня простое QT-приложение из-под NetBeans. Всё делаю по инструкции, все компиляторы/отладчики установлены, path прописан. Отладчик выдаёт:


Цитата:
/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `/c/WORK/Projects/NetBeans/HelloQtWorld_1'
/C/Programs/Programming/Qt/bin/qmake.exe VPATH=. -o qttmp-Debug.mk nbproject/qt-Debug.pro
mv -f qttmp-Debug.mk nbproject/qt-Debug.mk
/bin/make -f nbproject/qt-Debug.mk dist/Debug/MinGW-Windows/HelloQtWorld_1.exe
make[2]: Entering directory `/c/WORK/Projects/NetBeans/HelloQtWorld_1'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o dist/Debug/MinGW-Windows/HelloQtWorld_1.exe build/Debug/MinGW-Windows/HelloForm.o build/Debug/MinGW-Windows/newmain.o build/Debug/MinGW-Windows/moc_HelloForm.o -L'c:/Programs/Programming/Qt/lib' -lmingw32 -lqtmaind build/Debug/MinGW-Windows/HelloQtWorld_1_resource_res.o -lQtGuid4 -lQtCored4
c:/Programs/Programming/Qt/lib/libqtmaind.a(qtmain_win.o): In function `WinMain@16':
C:\iwmake\build_mingw_opensource\src\winmain/qtmain_win.cpp:93: undefined reference to `_Unwind_Resume'
C:\iwmake\build_mingw_opensource\src\winmain/qtmain_win.cpp:135: undefined reference to `_Unwind_Resume'
c:/Programs/Programming/Qt/lib/libqtmaind.a(qtmain_win.o):C:\iwmake\build_mingw_opensource\src\winmain/../../include/QtCore/../../src/corelib/tools/qvector.h:482: undefined reference to `_Unwind_Resume'
c:/Programs/Programming/Qt/lib/libqtmaind.a(qtmain_win.o):C:\iwmake\build_mingw_opensource\src\winmain/../../include/QtCore/../../src/corelib/tools/qvector.h:483: undefined reference to `_Unwind_Resume'
c:/Programs/Programming/Qt/lib/libqtmaind.a(qtmain_win.o):qtmain_win.cpp.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/MinGW-Windows/HelloQtWorld_1.exe] Error 1
make[2]: Leaving directory `/c/WORK/Projects/NetBeans/HelloQtWorld_1'
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory `/c/WORK/Projects/NetBeans/HelloQtWorld_1'
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 12s)


ps. При установке QT ругнулся, что не установлен MinGW, но я его потом доустановил. Может в этом причина?
Автор: brRamires
Дата сообщения: 12.03.2010 16:19

Цитата:
Что-то не компилируется у меня простое QT-приложение из-под NetBeans. Всё делаю по инструкции, все компиляторы/отладчики установлены, path прописан.

Разобрался, требовалось обновить MinGW до версии с gcc4.4 (скачал отсюда).
Автор: AvGSoft
Дата сообщения: 20.03.2010 18:21
Кто встречал ribbon для Qt
Автор: MoscowTeaParty
Дата сообщения: 20.03.2010 20:31
Поставил свежий SDK от 2010.02.1 - размер 1.37 Gb это не дело. Как бы мне его урезать. Выбросить отладочные либы, например. Заменить сами файлы хардлинками на релизные версии.

Господа, может у кого урезающий скрипт есть?
Автор: inri13666
Дата сообщения: 14.06.2010 21:16
Помогите разобраться как можно подключиться из QT к MS SQL Server 2008?
Заранее всем большое спасибо
Автор: JFK2005
Дата сообщения: 14.06.2010 21:33
inri13666

Код: //...

#include <QtSql>

//...

QSqlDatabase db0;

bool create_mssql_connection()
{
    db0 = QSqlDatabase::addDatabase("QODBC3");
    db0.setDatabaseName("DRIVER={SQL Server};Server=HOSTNAME;Database=dbname;");
    db0.setUserName("username");
    db0.setPassword("password");
    return db0.open();
}

//...

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

//...

if(create_mssql_connection())
{
    printf("connected.\n");
    QSqlQuery query;
    query = db0.exec("select a,b,c,d from dbname.dbo.Base");

//...
}

}
Автор: suvolod
Дата сообщения: 05.07.2010 12:22
Поясните пожалуйста по версиям. Как я понял, есть коммерческие и OpenSource. OpenSource не ставится на коммерческое ПО. Тогда вопрос, если я поставлю OpenSource - версию на бесплатную Visual Studio 2005 Express Edition - все заработает? Или останутся какие-то еще ограничения функционала?

P/S Если я в своих догадках прав, то как-то все это шоколадно выглядит. Ведь главное отличие Express-версии от коммерческой - нет поддержки GUI (MFC и CLR), а так получается что у меня будет полнофункциональный редактор/компилятор + к нему полнофункциональный GUI
Автор: JFK2005
Дата сообщения: 05.07.2010 16:03
suvolod

Цитата:
OpenSource не ставится на коммерческое ПО.

Ставится, с помощью интегратора. Разница между OpenSource и Commercial-редакциями Qt - лишь в способах лицензирования. Согласно лицензионному соглашению, разрабатывать коммерческие приложения с помощью бесплатной версии Qt нельзя.

Цитата:
если я поставлю OpenSource - версию на бесплатную Visual Studio 2005 Express Edition - все заработает? Или останутся какие-то еще ограничения функционала?

Вы не сможете интегрировать Qt в IDE Visual Studio Express, т.к. в данных редакциях студии отсутствует механизм подключения расширений.

Страницы: 1234567

Предыдущая тема: Как работать с TClientDataSet (Delphi)?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.