Реклама
  • Asteri
  • Ответ
  • 11 июля 2017 г. 14:47

css

Вот так)

QWidget
{
font-family: Arial, sans-serif;
}
QFrame {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1.0 #8e8e8e);
border: 1px solid #8080a0;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
QFrame{
background-color:#ffffff;
border: 1px solid #8080a0;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
  • Dmitras
  • Статья
  • 10 июля 2017 г. 13:19

Использование модуля QtTextToSpeech для синтеза речи

qttexttospeech, Qt, синтезатор речи, qt speech, qt читалка

Библиотека Qt 5.8.0 предоставила программистам возможность использовать системный синтезатор речи. Синтезатор речи - это программа, преобразующая текст в речь. Синтезаторы речи является неотъемлемой частью любой современной операционной системы: Windows (версии 7 и выше), Mac OS, Linux , iOS и Android . Кроссплатформенный интерфейс для управления синтезом речи предоставляет модуль QtTextToSpeech библиотеки Qt .

  • Для работы с модулем QtTextToSpeech на ОС Windows необходимо:
  • установить библиотеку Qt c модулем QtTextToSpeech для компилятора Visual Studio 2015 или старше ( mingw работать не будет );
  • установить компилятор Visual Studio 2015 ;
  • установить библиотеку SAPI 5.1 , если по какой-то причине она отсутствует на вашем компьютере;
  • установить голоса для синтезатора речи (если у вас они отсутствуют).
  • При сборке проекта необходимо использовать теневую сборку.
  • EVILEG
  • Ответ
  • 7 июля 2017 г. 23:10

Индикация выполнения запроса к БД

Уточните один момент, запросы к Базе Данных в виде QSqlQuery или ещё QSqlTableModel и т.д. используются? То есть смешанный вариант (в одном место так, в другом иначе)?

Вообще у QSqlQuery нет какого либо способа отдать прогресс выполнения, если только сам драйвер базы данных это позволяет, но например, драйвер MySQL не позволяет. 

Могу посоветовать попробовать выполнять запросы в отдельном потоке. А в это время крутить какую-нибудь анимированную крутилку.

По использованию потоков можете почитать вот это обсуждение.

Также вот эти статьи:

  • Dmitras
  • Статья
  • 6 июля 2017 г. 22:22

Использование gif-анимации в Qt с помощью класса QMovie

qt, qmovie, gif, анимация, gif-анимация

Все видели в интернете красивые анимированные изображения. Их можно скачать на свой компьютер качестве файла с расширением gif. Возникает вопрос — можно ли использовать разместить эти картинки в своих программах? Можно, отвечает библиотека Qt. Рассмотрим, как это сделать.

Создаём новый проект типа Qt widgets. Добавляем объект класса QMovie для воспроизведения анимации. На форме размещаем объект класса QLabel. В конструкторе приложения указываем имя файла для объекта, воспроизводящего анимацию:

mo.setFileName(":/ico/loader.gif");

Передаём указатель на этот объект в lable:

ui->label->setMovie(&mo);

Запускаем воспроизведение анимации:

mo.start();
  • EVILEG
  • Ответ
  • 2 июля 2017 г. 19:08

Проблема с получением данных об установленных программах

Это поможет?

Action Center {BB64F8A7-BEE7-4E1A-AB8D-7D8273F7FDB6}
Add Network Location {D4480A50-BA28-11d1-8E75-00C04FA31A86}
Administrative Tools {D20EA4E1-3957-11d2-A40B-0C5020524153}
Advanced User Accounts {7A9D77BD-5403-11d2-8785-2E0420524153}
Applications {4234d49b-0245-4df3-b780-3893943456e1}
AutoPlay {9C60DE1E-E5FC-40f4-A487-460851A8D915}
Backup and Restore {B98A2BEA-7D42-4558-8BD1-832F41BAC6FD}
Biometric Devices {0142e4d0-fb7a-11dc-ba4a-000ffe7ab428}
BitLocker Drive Encryption {D9EF8727-CAC2-4e60-809E-86F80A666C91}
Bluetooth Devices {28803F59-3A75-4058-995F-4EE5503B023C}
Briefcase {85BBD920-42AO-1069-A2E4-08002B30309D}
Color Management {B2C761C6-29BC-4f19-9251-E6195265BAF1}
Command Folder {437ff9c0-a07f-4fa0-af80-84b6c6440a16}
Common Places FS Folder {d34a6ca6-62c2-4c34-8a7c-14709c1ad938}
Computer {20d04fe0-3aea-1069-a2d8-08002b30309d}
Connect To {38A98528-6CBF-4CA9-8DC0-B1E1D10F7B1B}
Control Panel {5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}
Control Panel (All Tasks) {ED7BA470-8E54-465E-825C-99712043E01C}
Control Panel (Category view) {26EE0668-A00A-44D7-9371-BEB064C98683}
Control Panel (Icons view) {21EC2020-3AEA-1069-A2DD-08002B30309D}
Credential Manager {1206F5F1-0569-412C-8FEC-3204630DFB70}
Date and Time {E2E7934B-DCE5-43C4-9576-7FE4F75E7480}
Default Location {00C6D95F-329C-409a-81D7-C46C66EA7F33}
Default Programs {17cd9488-1228-4b2f-88ce-4298e93e0966} or {E44E5D18-0652-4508-A4E2-8A090067BCB0}
delegate folder that appears in Computer {b155bdf8-02f0-451e-9a26-ae317cfd7779}
Desktop Gadgets {37efd44d-ef8d-41b1-940d-96973a50e9e0}
Desktop in Favorites {04731B67-D933-450a-90E6-4ACD2E9408FE}
Device Manager {74246bfc-4c96-11d0-abef-0020af6b0b7a}
Devices and Printers {A8A91A66-3A7D-4424-8D24-04E180695C7A}
Display (DPI) {C555438B-3C23-4769-A71F-B6D3D9B6053A}
Ease of Access Center {D555645E-D4F8-4c29-A827-D93C859C4F2A}
E-mail (default program) {2559a1f5-21d7-11d4-bdaf-00c04f60b9f0}
Favorites {323CA680-C24D-4099-B94D-446DD2D7249E}
Flip 3D {3080F90E-D7AD-11D9-BD98-0000947B0257}
Folder Options {6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}
Font Settings {93412589-74D4-4E4E-AD0E-E0CB621440FD}
Fonts {BD84B380-8CA2-1069-AB1D-08000948534}
Gadgets {37efd44d-ef8d-41b1-940d-96973a50e9e0}
Game Controllers {259EF4B1-E6C9-4176-B574-481532C9BCE8}
Games Explorer {ED228FDF-9EA8-4870-83b1-96b02CFE0D52}
Get Programs {15eae92e-f17a-4431-9f28-805e482dafd4}
Getting Started {CB1B7F8C-C50A-4176-B604-9E24DEE8D4D1}
Help and Support {2559a1f1-21d7-11d4-bdaf-00c04f60b9f0}
HomeGroup {67CA7650-96E6-4FDD-BB43-A8E774F73A57} or {B4FB3F98-C1EA-428d-A78A-D1F5659CBA93}
Indexing Options {87D66A43-7B11-4A28-9811-C86EE395ACF7}
Infared {A0275511-0E86-4ECA-97C2-ECD8F1221D08}
Installed Updates {d450a8a1-9568-45c7-9c0e-b4f9fb4537bd}
Internet Explorer {871C5380-42A0-1069-A2EA-08002B30309D}
Internet Options {A3DD4F92-658A-410F-84FD-6FBBBEF2FFFE}
iSCCI Initiator {A304259D-52B8-4526-8B1A-A1D6CECC8243}
Keyboard Properties {725BE8F7-668E-4C7B-8F90-46BDB0936430}
Libraries {031E4825-7B94-4dc3-B131-E946B44C8DD5}
Location {00C6D95F-329C-409a-81D7-C46C66EA7F33}
Location and Other Sensors {E9950154-C418-419e-A90A-20C5287AE24B}
Manage Wireless Networks {1fa9085f-25a2-489b-85d4-86326eedcd87}
Mobility Center {5ea4f148-308c-46d7-98a9-49041b1dd468}
Mouse Properties {6C8EEC18-8D75-41B2-A177-8831D59D2D50}
My Documents {450d8fba-ad25-11d0-98a8-0800361b1103}
Network {F02C1A0D-BE21-4350-88B0-7367FC96EF3C}
Network and Sharing Center 8E908FC9-BECC-40f6-915B-F4CA0E70D03D}
Network Center Notification area pop-up {38A98528-6CBF-4CA9-8DC0-B1E1D10F7B1B}
Network Connections {7007ACC7-3202-11D1-AAD2-00805FC1270E} or {992CFFA0-F557-101A-88EC-00DD010CCC48}
Network Map {E7DE9B1A-7533-4556-9484-B26FB486475E}
Network Neighborhood {208D2C60-3AEA-1069-A2D7-O8002B30309D}
Network (WorkGroup) Places {208D2C60-3AEA-1069-A2D7-08002B30309D}
Notification Area Icons {05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}
NVIDIA Control Panel (if driver installed) {0bbca823-e77d-419e-9a44-5adec2c8eeb0}
Offline Files Folder {AFDB1F70-2A4C-11d2-9039-00C04F8EEB3E}
Parental Controls {96AE8D84-A250-4520-95A5-A47A7E3C548B}
Pen and Touch {F82DF8F7-8B9F-442E-A48C-818EA735FF9B}
People Near Me {5224F545-A443-4859-BA23-7B5A95BDC8EF}
Performance Information and Tools {78F3955E-3B90-4184-BD14-5397C15F1EFC}
Personalization {ED834ED6-4B5A-4bfe-8F11-A626DCB6A921}
Phone & Modem Location Information {40419485-C444-4567-851A-2DD7BFA1684D}
Portable Devices {35786D3C-B075-49b9-88DD-029876E11C01}
Power Options {025A5937-A6BE-4686-A844-36FE4BEC8B6D}
Previous Versions Results Folder {f8c2ab3b-17bc-41da-9758-339d7dbf2d88}
printhood delegate folder {ed50fc29-b964-48a9-afb3-15ebb9b97f36}
Printers {2227A280-3AEA-1069-A2DE-08002B30309D} or {863aa9fd-42df-457b-8e4d-0de1b8015c60}
Programs and Features {7b81be6a-ce2b-4676-a29e-eb907a5126c5}
Public folder {4336a54d-038b-4685-ab02-99bb52d3fb8b}
Recent Places {22877a6d-37a1-461a-91b0-dbda5aaebc99}
Recovery (System Restore) {9FE63AFD-59CF-4419-9775-ABCC3849F861}
Recycle Bin {645FF040-5081-101B-9F08-00AA002F954E}
Region and Language {62d8ed13-c9d0-4ce8-a914-47dd628fb1b0}
RemoteApp and Desktop Connections {241D7C96-F8BF-4F85-B01F-E2B043341A4B}
Run {2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}
Search {2559a1f0-21d7-11d4-bdaf-00c04f60b9f0}
Search Results {9343812e-1c37-4a49-a12e-4b2d810d956b}
Set Program Access and Defaults {2559a1f7-21d7-11d4-bdaf-00c04f60b9f0}
Show Desktop {3080F90D-D7AD-11D9-BD98-0000947B0257}
Sound {F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D}
Speech Recognition {58E3C745-D971-4081-9034-86E34B30836A}
Sync Center {9C73F5E5-7AE7-4E32-A8E8-8D23B85255BF}
Sync Setup Folder {2E9E59C0-B437-4981-A647-9C34B9B90891}
System {BB06C0E4-D293-4f75-8A90-CB05B6477EEE}
System Icons {05d7b0f4-2121-4eff-bf6b-ed3f69b894d9} \SystemIcons
Tablet PC Settings {80F3F1D5-FECA-45F3-BC32-752C152E456E}
Taskbar and Start Menu {0DF44EAA-FF21-4412-828E-260A8728E7F1}
Text to Speech {D17D1D6D-CC3F-4815-8FE3-607E7D5D10B3}
Time and Date {E2E7934B-DCE5-43C4-9576-7FE4F75E7480}
Troubleshooting {C58C4893-3BE0-4B45-ABB5-A63E4B8C8651}
User Accounts {60632754-c523-4b62-b45c-4172da012619}
User Folder {59031a47-3f72-44a7-89c5-5595fe6b30ee}
User Pinned {1f3427c8-5c10-4210-aa03-2ee45287d668}
Web Browser (default) {871C5380-42A0-1069-A2EA-08002B30309D}
Windows Anytime Upgrade {BE122A0E-4503-11DA-8BDE-F66BAD1E3F3A}
Windows Cardspace {78CB147A-98EA-4AA6-B0DF-C8681F69341C}
Windows Defender {D8559EB9-20C0-410E-BEDA-7ED416AECC2A}
Windows Features {67718415-c450-4f3c-bf8a-b487642dc39b}
WEI {78F3955E-3B90-4184-BD14-5397C15F1EFC}
Windows Firewall {4026492F-2F69-46B8-B9BF-5654FC07E423}
Windows Mobility Center {5ea4f148-308c-46d7-98a9-49041b1dd468}
Windows SideShow {E95A4861-D57A-4be1-AD0F-35267E261739}
Windows Update {36eef7db-88ad-4e81-ad49-0e313f0c35f8}

Проблема с получением данных об установленных программах

Здравствуйте! Я решил делать по другому, через Win API (Shell):

Код:
HRESULT hr = CoInitialize(NULL);
	if (SUCCEEDED(hr))
	{
		LPITEMIDLIST pidlPrograms = NULL;
		IShellFolder *psfPrograms = NULL;
		// Installed Apps
		hr = SHParseDisplayName(TEXT("shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{7B81BE6A-CE2B-4676-A29E-EB907A5126C5}"), NULL, &pidlPrograms, 0, NULL);
		if (SUCCEEDED(hr))
		{
			IShellFolder* pshDesktop;
			hr = SHGetDesktopFolder(&pshDesktop);
			hr = pshDesktop->BindToObject(pidlPrograms, NULL, IID_IShellFolder, (void**)&psfPrograms);
			if (SUCCEEDED(hr))
			{
				IEnumIDList *ppenum = NULL;
				LPITEMIDLIST pidlChild = NULL;
				ULONG celtFetched = 0;
				hr = psfPrograms->EnumObjects(NULL, SHCONTF_ENABLE_ASYNC | SHCONTF_FLATLIST | SHCONTF_FOLDERS | SHCONTF_INCLUDEHIDDEN | SHCONTF_NONFOLDERS, &ppenum);
				if (SUCCEEDED(hr))
				{
					int nX = 0, nY = 0;
					hr = ppenum->Next(1, &pidlChild, &celtFetched);
					while (hr = ppenum->Next(1, &pidlChild, &celtFetched) == S_OK && (celtFetched) == 1)
					{
						STRRET strFolderName;
						TCHAR szFolderName[MAX_PATH];
						if ((psfPrograms->GetDisplayNameOf(pidlChild, SHGDN_INFOLDER, &strFolderName) == S_OK) &&
							(StrRetToBuf(&strFolderName, pidlChild, szFolderName, MAX_PATH) == S_OK))
						{
							SHFILEINFO sfi = { 0 };
							PIDLIST_ABSOLUTE pidlAbs = NULL;
							pidlAbs = ILCombine(pidlPrograms, (LPITEMIDLIST)pidlChild);
							HIMAGELIST hImageList = (HIMAGELIST)(SHGetFileInfo((LPCWSTR)pidlAbs, 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX | SHGFI_PIDL));
							if (hImageList)
							{
								// draw text + icon just to test
								int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
								int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
								HDC hDC = GetDC(NULL);
								DrawIconEx(hDC, nX, nY + 18, ImageList_GetIcon(hImageList, sfi.iIcon, ILD_TRANSPARENT), 0, 0, 0, NULL, DI_IMAGE);
								RECT rect;
								SetRect(&rect, nX, nY, nX + 400, nY + 32);
								SetTextColor(hDC, RGB(255, 255, 255));
								SetBkColor(hDC, RGB(0, 0, 0));
								DrawText(hDC, szFolderName, -1, &rect, DT_SINGLELINE);
								nY += 50;
								if (nY >= nScreenHeight)
								{
									nY = 0;
									nX += 410;
								}
								ReleaseDC(NULL, hDC);
							}
						}
					}
					ppenum->Release();
				}
			}
			psfPrograms->Release();
		}
		CoUninitialize();
	}
Все работает, только нужно сделать вывод Пути удаления,  и чтобы работало с Win XP.
Дело в том что нужно изменить ключ Shell в этой функции - (SHParseDisplayName(TEXT("shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{7B81BE6A-CE2B-4676-A29E-EB907A5126C5}"), NULL, &pidlPrograms, 0, NULL);).

Вот некоторые ключи реестра в Win XP :

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\CLSID:

{0B124F8F-91F0-11D1-B8B5-006008059382} | Data - Installed Apps Enumerator
{1BC972D6-555C-4FF7-BE2C-C584021A0A6A} | Data - Software installation
{317E92FC-1679-46FD-A0B5-F08914DD8623} | Data - InstallationAgent Class
{BACF5C8A-A3C7-11D1-A760-00C04FB9603F} | Data - Software installation


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\Add-Remove_Programs | Name - Add/Remove Programs

Но какой комбинировать? Можете помочь? Спасибо.

отрисовка графика и доступ к параметрам графика

СДоброго времени суток
У меня существует массив данных для 2-х графиков(2 матрицы размером 1*N)
Существуют заголовки данных графиков(тоже массив чисел)
Мне нужно отрисовать графики на QFrame и при нажатии на один из графиков получать окошко с заголовками данного графика
ниже прикреплена статья, на которую вы так любезно ответили(примерно про эти графики идет речь)->
https://evileg.com/forum/topic/241/#post-1563
Подаскажите пожалуйста
1/ Как организовать БД для хранения и быстрого доступа данных графиков и их заголовков(желательно как то разделять данные заголовки и графики по файлам)
2/ Чем отрисовывать данные графики(скорость очень важна)
3/ Как сделать так, чтобы при кликании мышки на график он красился синим цветом и вылезало окошко с заголовками
Прошу направьте меня хоть в каком нибудь направлении, аот совсем тяжко и надежда только на вас
Заранее спасибо за скорейший ответ

  • alex_lip
  • Вопрос
  • 28 июня 2017 г. 12:46

от QT к QML

Добрый день.
Большое спасибо вам за ваши уроки.  Можете смело издавать книгу "100 первых уроков для QT/QML".
Теперь вопрос. Я сделал на QT разбор JSON файла (который я получаю с сайта при помощи networkadapter). Получил таблицу. На QT все работает. Теперь хочу эту таблицу показать в слое QML.
Благодаря уроку сигналы и слоты в QML передал в слой QML  одну ячейку из этой таблицы в текстовое поле. Все хорошо.
Но теперь "завис" никак не пойму как мне на основе разобранного JSON файла создать модель и передать ее на слой QML например в ListView. Количество полей мне заранее известно. Урок с примером Передача данных из QSqlQueryModel в Qml TableView для меня оказался слишком сложным. Можете на каком-то более простом примере пояснить?

Реклама
Последние комментарии
  • EVILEG
  • 13 июля 2017 г. 2:12

Qt/C++ - Урок 023. Перетаскивание QGraphicsItem на QGraphicsScene мышью

Ну например так можете сделать.void MoveItem::mousePressEvent(QGraphicsSceneMouseEvent *event){ if (QApplication::mouseButtons() == Qt::RightButton) { this->deleteLa...

  • Mark
  • 13 июля 2017 г. 1:26

Qt/C++ - Урок 023. Перетаскивание QGraphicsItem на QGraphicsScene мышью

Подскажите пожалуйста как в данном проекте по перетаскиванию организовать удаление объекта со scene методом delete item, допустим при щелчке ПКМ по объекту QGraphicsScene. Мои попытки оказалис...

  • EVILEG
  • 10 июля 2017 г. 21:34

Qt/C++ - Урок 048. QThread - работа с потоками с помощью moveToThread

А что делали? Повторяете урок или как? Пытались просто скачать проект в конце статьи и запустить?

Qt/C++ - Урок 048. QThread - работа с потоками с помощью moveToThread

У меня происходит переполнение счетчика count, появляется ошибка malloc(): memory corruption (fast). Не подскажите, как с этим бороться?

  • EVILEG
  • 9 июля 2017 г. 2:07

GameDev на Qt - Урок 3. Уничтожение противников

Поэтому в пятом уроке есть исходники всего проекта )))). Вообще, все эти материалы были не предыдущей версии сайта, которая на WordPress. Во время переноса мог что-то потерять.

Сейчас обсуждают на форуме

тестирование классов в QT

это вопрос.

Как реализовать отправку e-mail

Возможно что уже и нет необходимости в почтовом клиенте, но в своё время так же столкнулся с данной проблемой в QT. Нашел один интересный проект под названием libqxt, там реализовано дов...

  • Asteri
  • 14 июля 2017 г. 12:23

css

Делюсь, может, пригодится когда-нибудь) QTableView QHeaderView { background-color: #ffffff; } Вот так эта проблема лечится, градиент задать не получается, но хоть...

  • EVILEG
  • 12 июля 2017 г. 19:52

QSqlQuery выполнение sql запросов из файла

Мне думается, что это уже будет дело вкуса и вашего взгляда на проект. Если Вы действительно собираетесь просто скармливать своему софту SQL скрипты, которые должны будут выполняться для...

QML Canvas + Line. Bug?

Вот оно что, значит не баг) Спасибо