Чтобы сбросить выделение в виджете QListWidget:
ui->listWidgetSelect->clearSelection();
Чтобы сбросить выделение в виджете QListWidget:
ui->listWidgetSelect->clearSelection();
Расскажу, как запустить программу, написанную на C++/Qt для windows, на другом компьютере, где библиотеки Qt 5 не установлены. Вот мы, допустим, установили Qt Creator, создали приложение из одного окна с надписью «Hello World», выбрали для сборки конфигурацию «Выпуск» и нажали заветный зелёный треугольник. Через несколько секунд успешно запустится наша программа. Находим, где же программа лежит. Путь к ней будет примерно такой: D:\…Projects\2013-09-30_HelloWorld\build-HelloWorld-Desktop_Qt_5_2_0_MinGW_32bit-Выпуск\release\HelloWorld.exe. Радоваться рано. Если мы закроем Qt Creator, отправимся по этому пути и попытаемся запустить HelloWorld.exe,то получим следующую ошибку: «Запуск программы не возможен, так как на компьютере отсутствует Qt5Core.dll. Попробуйте переустановить программу.» Точно такая же ошибка возникнет на любом другом компьютере, где мы попытаемся запустить эту программу. Варианты решения:
1. Пересобрать сам Qt, чтобы собранные приложения статически линковались с библиотеками Qt 5 — долго, сложно, программа будет тяжёлая, и заморочки с лицензированием
2. Устанавливать на все компьютеры, где будем использовать программу, библиотеки Qt 5, совместимые с нашей сборкой, и прописывать путь к ним в системной переменной PATH
3. Сложить все необходимые DLL-библиотеки в одну папку с экзешником нашей программы. Получится по сути Portable-версия, которую можно будет хоть с флэшки запускать. Этот способ самый простой, им и воспользуемся.
Порядок следующий:
1. Копируем программу в отдельную папку
2. Запускаем, смотрим имя файла в тексте ошибки
3. Находим этот DLL-файл в папке C:\Qt\Qt5.2.0\5.2.0\mingw48_32\bin и копируем его рядом с экзешником
4. Возвращаемся к пункту 2 и повторяем до тех пор, пока программа не запустится.
Итого у меня по минимуму получился следующий список DLL-библиотек для Qt 5.2:
Всего размер папки получился 42 Мб, вроде как бы многовато для простого Hello World. Кого это не смущает — уже могут делиться своей программой. А я расскажу теперь, как сократить этот объём хотя бы до 16 Мб, не сильно сложно (для сравнения библиотеки Qt4 от известной программы для хранения паролей KeePassX весят 10 Мб). Библиотеки и программу мы будем просто сжимать бесплатным свободным упаковщиком UPX. Порядок действий:
Вот теперь папка с нашей программой весит 16 Мб, и её содержимое можно спокойно запускать на других компьютерах.
Вырезаем QPixmap по рамке x, y, ширина, высота (в пикселях)
QPixmap::copy(int x, int y, int width, int height)
Вовремя пригодилась статья: [Qt] UTF в 1251 и 1251 в UTF. Как раз занимался расшифровкой дампа базы данных main.db от телефона Motorola A1200 (формат базы данных — BerkleyDB4). Самый полезный кусок кода:
QByteArray msg = QByteArray::fromHex("cde5eff0e0e2e8ebfcedeee520f1eeeee1f9e5ede8e5204b4f4e5f544d5f484f53544b4e4620eef220d3cad2d121"); QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); QString strf = codec->toUnicode(msg); qDebug() << strf;
Сайт http://inqlude.org — каталог библиотек для разработки на Qt. Библиотеки собраны как стабильные, так и недоделанные (бета, альфа и т.п.). Есть ссылки на платные библиотеки. Авторы проекта inqlude поставили перед собой задачу собрать в одном месте информацию обо всех доступных библиотеках Qt.
Из того, что руки зачесались попробовать:
Все библиотеки на сайте перечислены с описаниями, ссылкамина исходники и документацию.
QFilef(qApp->applicationDirPath()+QDir::separator()+"file.txt");
QDird(QString(getenv("USERPROFILE"))+"\\AppData\\Roaming\\Microsoft\\Windows\\SendTo");
QProcess().startDetached("explorerftp://server");
QString path = "c:\\setup.log"; QDesktopServices::openUrl(QUrl::fromLocalFile(path)); Откроется в блокноте указанный файл
emscripten-qt — компилятор Qt в javascript для браузера. Это страница с откомпилированными QT-демнами: http://vps2.etotheipiplusone.com:30176/redmine/projects/emscripten-qt/wiki/Demos Пока поддержка Qt не полная, не все модули работают, но то что используется в демках — точно работает.