mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-04-26 15:13:56 +00:00
[qt/ru] Qt Russian translation (#2398)
* Qt Russian translation * Keeping code blocks < 80 chars, links language marks added.
This commit is contained in:
parent
52ff7917d6
commit
dacc2de3b2
158
ru-ru/qt-ru.html.markdown
Normal file
158
ru-ru/qt-ru.html.markdown
Normal file
@ -0,0 +1,158 @@
|
||||
---
|
||||
category: tool
|
||||
tool: Qt Framework
|
||||
language: c++
|
||||
filename: learnqt-ru.cpp
|
||||
contributors:
|
||||
- ["Aleksey Kholovchuk", "https://github.com/vortexxx192"]
|
||||
translators:
|
||||
- ["Evan K.", "https://github.com/justblah"]
|
||||
lang: ru-ru
|
||||
---
|
||||
|
||||
**Qt** является широко известным фреймворком для разработки кросс-платформенного программного обеспечения, которое может быть запущено на различных программно-аппаратных платформах практически без изменений в коде, сохраняя при этом мощность и скорость нативных приложений. Хоть **Qt** и был изначально написан на *C++*, у него есть реализации и на других языках: *PyQt*, *QtRuby*, *PHP-Qt* и т.д.
|
||||
|
||||
**Qt** отлично подходит для создания приложений с графическим пользовательским интерфейсом (GUI). Это руководство о том, как сделать это на *C++*.
|
||||
|
||||
```c++
|
||||
/*
|
||||
* Начнём по-старинке
|
||||
*/
|
||||
|
||||
// все header файлы импортированные из Qt начинаются с заглавной 'Q'
|
||||
#include <QApplication>
|
||||
#include <QLineEdit>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
// создаем объект для управления данными приложения
|
||||
QApplication app(argc, argv);
|
||||
|
||||
// создаем редактируемую строку и отобразим её на экране
|
||||
QLineEdit lineEdit("Hello world!");
|
||||
lineEdit.show();
|
||||
|
||||
// запускаем цикл для обработки событий (event loop)
|
||||
return app.exec();
|
||||
}
|
||||
```
|
||||
|
||||
GUI часть **Qt** полностью состоит из *виджетов* и *связей* между ними.
|
||||
|
||||
[(EN) ПОДРОБНЕЕ О ВИДЖЕТАХ](http://doc.qt.io/qt-5/qtwidgets-index.html)
|
||||
|
||||
```c++
|
||||
/*
|
||||
* В этом примере мы отобразим надпись с кнопкой.
|
||||
* Надпись будет появляться после нажатия на кнопку.
|
||||
*
|
||||
* Код на Qt говорит сам за себя.
|
||||
*/
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDialog>
|
||||
#include <QVBoxLayout>
|
||||
#include <QPushButton>
|
||||
#include <QLabel>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
QApplication app(argc, argv);
|
||||
|
||||
QDialog dialogWindow;
|
||||
dialogWindow.show();
|
||||
|
||||
// добавляем вертикальное расположение
|
||||
QVBoxLayout layout;
|
||||
dialogWindow.setLayout(&layout);
|
||||
|
||||
QLabel textLabel("Thanks for pressing that button");
|
||||
layout.addWidget(&textLabel);
|
||||
textLabel.hide();
|
||||
|
||||
QPushButton button("Press me");
|
||||
layout.addWidget(&button);
|
||||
|
||||
// отображаем скрытую надпись после нажатия на кнопку
|
||||
QObject::connect(&button, &QPushButton::pressed,
|
||||
&textLabel, &QLabel::show);
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
```
|
||||
Обратите внимание на метод *QObject::connect*. Этот метод соединяет *СИГНАЛЫ* одного объекта со *СЛОТАМИ* другого.
|
||||
|
||||
**Сигналы** отправляются когда с объектами происходят отпределённые события, например, сигнал *нажатие* отправляется когда пользователь нажимает на объект типа QPushButton.
|
||||
|
||||
**Слоты** это *действия*, которые могут быть выполнены в ответ на полученные сигналы.
|
||||
|
||||
[(EN) ПОДРОБНЕЕ О СЛОТАХ И СИГНАЛАХ](http://doc.qt.io/qt-4.8/signalsandslots.html)
|
||||
|
||||
|
||||
Далее рассмотрим, как можно не только использовать стандартные виджеты, но и расширять их поведение с помощью наследования. Давайте создадим кнопку и посчитаем, сколько раз она была нажата. Для этого мы определяем наш собственный класс *CounterLabel*. Он должен быть объявлен в отдельном файле из-за специфической архитектуры Qt.
|
||||
|
||||
```c++
|
||||
// counterlabel.hpp
|
||||
|
||||
#ifndef COUNTERLABEL
|
||||
#define COUNTERLABEL
|
||||
|
||||
#include <QLabel>
|
||||
|
||||
class CounterLabel : public QLabel {
|
||||
Q_OBJECT // макрос Qt, обязателен для всех виджетов
|
||||
|
||||
public:
|
||||
CounterLabel() : counter(0) {
|
||||
setText("Counter has not been increased yet"); // метод QLabel
|
||||
}
|
||||
|
||||
public slots:
|
||||
// действие, которое будет вызвано в ответ на нажатие
|
||||
void increaseCounter() {
|
||||
setText(QString("Counter value: %1").arg(QString::number(++counter)));
|
||||
}
|
||||
|
||||
private:
|
||||
int counter;
|
||||
};
|
||||
|
||||
#endif // COUNTERLABEL
|
||||
```
|
||||
|
||||
```c++
|
||||
// main.cpp
|
||||
// Почти тоже самое, что и в предыдущем примере
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDialog>
|
||||
#include <QVBoxLayout>
|
||||
#include <QPushButton>
|
||||
#include <QString>
|
||||
#include "counterlabel.hpp"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
QApplication app(argc, argv);
|
||||
|
||||
QDialog dialogWindow;
|
||||
dialogWindow.show();
|
||||
|
||||
QVBoxLayout layout;
|
||||
dialogWindow.setLayout(&layout);
|
||||
|
||||
CounterLabel counterLabel;
|
||||
layout.addWidget(&counterLabel);
|
||||
|
||||
QPushButton button("Push me once more");
|
||||
layout.addWidget(&button);
|
||||
QObject::connect(&button, &QPushButton::pressed,
|
||||
&counterLabel, &CounterLabel::increaseCounter);
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
```
|
||||
|
||||
## На почитать
|
||||
Это всё! Конечно, фреймворк Qt намного объемнее, чем часть, которая была рассмотрена в этом руководстве, так что будьте готовы читать и практиковаться.
|
||||
|
||||
[(EN) ДОКУМЕНТАЦИЯ](http://wiki.qt.io/Main/ru)
|
||||
|
||||
Удачи!
|
Loading…
Reference in New Issue
Block a user