Qt (Русский)

From ArchWiki
Jump to navigation Jump to search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Qt — кроссплатформенный набор инструментов для создания приложений и виджетов, который использует стандартный язык программирования C++, а также специальный генератор кода (Meta Object Compiler, или moc) вместе с набором макросов, расширяющих возможности языка. Набор предоставляет широкие возможности по разработке приложений; среди наиболее важных:

  • Работа на основных компьютерных платформах и операционных системах, а также на некоторых мобильных платформах.
  • Обширная поддержка возможностей интернационализации.
  • Полнофункциональная библиотека с поддержкой SQL баз данных, парсинга XML, управления потоками, сети и унифицированный кроссплатформенный программный интерфейс (API) для работы с файлами.

На основе фреймворка Qt развивается сообщество и программное обеспечение KDE. Qt лежит в основе других важных проприетарных и открытых программных проектов, таких как VLC, VirtualBox, Opera, Mathematica, Skype и многих других.

Установка

В настоящее время две версии Qt доступны в официальных репозиториях. Они могут быть установлены со следующими пакетами:

  • Qt 5.x входит в пакет qt5-base, документация — qt5-doc.
  • Qt 4.x предоставляется пакетом qt4, документация — qt4-docAUR.
  • Qt 3.x можно установить из AUR с пакетом qt3AUR, документация — qt3-docAUR.
Важно: Пакеты Qt больше не помещают исполняемые файлы утилит вроде qmake в /usr/bin. Вместо этого создаются символические ссылки с суффиксом версии, например qmake-qt5, qmake-qt4, qmake-qt3. Это может вызвать проблемы со сборкой проектов для Qt версий 3 и 4. Как установить исполняемые файлы в /usr/bin показано в разделе #Выбор набора Qt по умолчанию.

Выбор набора Qt по умолчанию

Установив qtchooserAUR, вы сможете выбрать, для какого набора Qt из установленных необходимо перенести исполняемые файлы (например, qmake) в /usr/bin. По умолчанию используется Qt5.

Используя переменные окружения

Чтобы выбрать конкретный набор Qt, вы можете создать переменную окружения QT_SELECT. Например, чтобы выбрать Qt4, добавьте export QT_SELECT=4 в файл инициализации вашей командной оболочки (например, ~/.bash_profile или ~/.zsh_profile).

Используя файл конфигурации

Вы можете выбрать версию набора Qt по умолчанию, создав символическую ссылку ~/.config/qtchooser/default.conf на один из файлов .conf в каталоге /etc/xdg/qtchooser. Например, чтобы выбрать Qt4, создайте ссылку на /etc/xdg/qtchooser/4.conf:

$ ln -s /etc/xdg/qtchooser/4.conf ~/.config/qtchooser/default.conf

Внешний вид

Настройка

Приложения Qt, по возможности, пытаются подражать внешнему вид и поведению других приложений в той среде рабочего стола, где они запускаются. Если вы хотите поменять внешний вид и поведение интерфейса приложения Qt, вы можете использовать утилиту Qt Configuration (qtconfig-qt4 или qt3config). Она позволяет легко и просто настроить внешний вид приложений: стиль, цвета, шрифты и многие другие параметры.

Обратите внимание, что утилита была исключена в версии Qt5. Если вы хотите принудительно установить внешний вид и поведение интерфейса приложений Qt5, установите переменную окружения QT_STYLE_OVERRIDE с названием желаемого стиля (например, gtk).

Панель KDE System Settings (Настройки Системы) также предоставляет доступ ко многим параметрам графического интерфейса, которые используются в приложениях Qt.

Темы

Несколько стилей поставляются вместе с Qt, например GTK+, Windows или CDE, однако вы можете установить многие другие стили из официальных репозиториев или AUR (большинство созданы для рабочего стола KDE):

  • Oxygen — Одна из стандартных тем рабочего стола KDE.
http://www.oxygen-icons.org/ || kdebase-runtimeAUR
  • QtCurve — Очень гибкая в настройке и популярная тема рабочего стола с поддержкой приложений GTK+ и Qt.
http://kde-look.org/content/show.php?content=40492 || qtcurve
  • Skulpture — Еще одна тема для KDE и Qt.
http://kde-look.org/content/show.php/?content=59031 || skulptureAUR[ссылка недействительна: сохранено в aur-mirror]
  • Polymer — Порт темы KDE Plastik для Qt3.
http://kde-look.org/content/show.php?content=21748 || polymerAUR
  • Bespin — Тема KDE с широкими возможностями настройки.
http://cloudcity.sourceforge.net/frame.php || bespin-svnAUR[ссылка недействительна: сохранено в aur-mirror]

Шрифты

Шрифты в Qt могут быть настроены с помощью Qt Configuration в меню FontsDefault Font.

Примечание: Если у вас рабочий стол GTK+ (например, вы используете GNOME или Xfce), и опция GUI Style установлена в Desktop Settings (default) или GTK+, эта настройка будет проигнорирована.

Значки

С помощью Qt Configuration нельзя установить тему значков, но, так как Qt следует спецификации именования значков Freedesktop.org, любая тема установленная для X будет использоваться и в Qt.

Ручная настройка

Qt хранит все настройки в файле ~/.config/Trolltech.conf. В его содержимом довольно трудно ориентироваться, так как он содержит множество опций не связанных с внешним видом приложений. Однако, для внесения любых изменений вы можете всего-лишь дописать новые значения в конец файла и тем самым переопределить любые ранее установленные значения (убедитесь, что добавляете свои изменения в секцию [Qt]).

Например, чтобы изменить тему на QtCurve, добавьте:

~/.config/Trolltech.conf
...
[Qt]
style=QtCurve

Таблицы стилей Qt

Интересным способом модификации внешнего вида приложений Qt является использование таблиц стилей, которые представляют собой обычные CSS-файлы. Используя таблицы стилей, пользователь может изменить внешний вид любого виджета в приложении.

Чтобы запустить приложение, используя указанную таблицу стилей просто передайте путь к файлу в опции --stylesheet:

$ qt_application --stylesheet style.qss

Для получения подробной информации о таблицах стилей Qt смотрите официальную документацию или руководство. Пример таблицы стилей вы можете найти на этой странице.

GTK+ и Qt

Если вы используете одновременно приложения GTK+ и Qt, их внешний вид может несколько различаться. Если вы хотите, чтобы стили отображения в точности соответствовали друг другу, смотрите статью Единый вид приложений GTK и Qt.

Разработка

Поддержка платформ

Qt поддерживает большинство доступных сегодня платформ, включая даже весьма малоизвестные. Полный список поддерживаемых платформ вы можете найти в статье на Wikipedia.

Инструменты

Tango-preferences-desktop-locale.pngЭта статья или раздел нуждается в переводеTango-preferences-desktop-locale.png

Примечания: Нужны ссылки на инструменты Qt5. (обсуждение: Talk:Qt (Русский)#)

Список официальных инструментов разработки для Qt:

  • Qt Creator — Кроссплатформенная среда разработки, созданная для разработки приложений Qt.
http://qt-project.org/doc/qtcreator/ || qtcreator
  • Qt Linguist — Набор инструментов для упрощения перевода и интернационализации приложений Qt.
http://qt-project.org/doc/qt-4.8/linguist-manual.html || qt4
  • Qt Assistant — Справочная система для чтения документации по Qt.
http://qt-project.org/doc/qt-4.8/assistant-manual.html || qt4
  • Qt Designer — Инструмент для разметки графического интерфейса приложений Qt и создания форм для виджетов.
http://qt-project.org/doc/qt-4.8/designer-manual.html || qt4
  • Qt Quick Designer — Визуальный редактор файлов QML, поддерживающий режим WYSIWYG. Он позволяет с нуля проектировать и разрабатывать приложения и компоненты Qt Quick.
http://qt-project.org/doc/qtcreator-2.8/creator-using-qt-quick-designer.html || qtcreator
  • QML Viewer — Инструмент для быстрой разработки и отладки приложений QML.
http://qt-project.org/doc/qt-4.8/qmlviewer.html || qt4
  • qmake — Средство автоматизации процесса сборки приложений Qt на различных платформах, похожее на cmake, но с меньшим количеством опции и ориентированное на приложения Qt.
https://qt-project.org/doc/qt-4.8/qmake-manual.html || qt4
  • uic — Генератор кода C++ на основе .ui-файлов.
http://qt-project.org/doc/qt-4.8/uic.html || qt4
  • rcc — Инструмент для упаковки ресурсов (например, изображений) в приложение при сборке. По сути генерирует код на C++, содержащий данные, указанные в файле ресурсов (.qrc).
http://qt-project.org/doc/qt-4.8/rcc.html || qt4
  • moc — Препроцессор исходных файлов, обрабатывающий расширения Qt для C++ (например, директивы механизма сигналов и слотов, RTTI, аннотации).
http://doc.qt.digia.com/4.7-snapshot/moc.html || qt4

Другие языки программирования

Qt имеет привязки ко многим популярным языкам программирования. Полный список поддерживаемых языков вы можете найти в статье Qt в Wikipedia.

Приведенные ниже примеры отображают окно с сообщением 'Hello world!'.

C++

  • Пакет: qt4
  • Сайт: http://qt-project.org/
  • Команда сборки:
    • Версия Qt4: g++ $(pkg-config --cflags --libs QtGui) -o hello hello.cpp
    • Версия Qt5: g++ $(pkg-config --cflags --libs Qt5Widgets) -o hello hello.cpp
  • Команда запуска: ./hello
hello.cpp
#include <QApplication>
#include <QLabel>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QLabel hello("Hello world!");

    hello.show();
    return app.exec();
}

QML

hello.qml
import QtQuick 1.0

Rectangle {
    id: page
    width: 400; height: 100
    color: "lightgray"

    Text {
        id: helloText
        text: "Hello world!"
        anchors.horizontalCenter: page.horizontalCenter
        anchors.verticalCenter: page.verticalCenter
        font.pointSize: 24; font.bold: true
    }
}
Примечание: Для Qt 5.x нужно импортировать QtQuick 2.y.

Python (PyQt)

hello-pyqt.py
import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)
label = QtGui.QLabel("Hello world!")

label.show()
sys.exit(app.exec_())

The Qt 5.x version is slighly different:

hello-pyqt.py
import sys
from PyQt5 import QtWidgets

app = QtWidgets.QApplication(sys.argv)
label = QtWidgets.QLabel("Hello world!")

label.show()
sys.exit(app.exec_())

Python (PySide)

hello-pyside.py
import sys
from PySide.QtCore import *
from PySide.QtGui import *

app = QApplication(sys.argv)
label = QLabel("Hello world!")

label.show()
sys.exit(app.exec_())

C#

hello.cs
using System;
using Qyoto;

public class Hello {
    public static int Main(String[] args) {
        new QApplication(args);
        new QLabel("Hello world!").Show();

        return QApplication.Exec();
    }
}

Ruby

hello.rb
require 'Qt4'

app = Qt::Application.new(ARGV)
hello = Qt::Label.new('Hello World!')

hello.show
app.exec

Java

Hello.java
import com.trolltech.qt.gui.*;

public class Hello
{
    public static void main(String args[])
    {
        QApplication.initialize(args);
        QLabel hello = new QLabel("Hello World!");

        hello.show();
        QApplication.exec();
    }
}
Примечание: Инструкции сборки и пример были протестированы на бета-версии Qt Jambi 4.7.0.

Perl

hello.pl
use QtGui4;

my $a = Qt::Application(\@ARGV);
my $hello = Qt::Label("Hello World!", undef);

$hello->show;
exit $a->exec;

Lua

hello.lua
label = qt.new_widget("QLabel")

label:setText("Hello World!")
label:show()
Примечание: QtLua не позволяет писать приложения Qt на чистом Lua; вместо этого, он предлагает расширение возможностей приложения на C++ с помощью скриптового языка.

Смотрите также