Читать книги » Книги » Компьютеры и Интернет » Интернет » Основы программирования в Linux - Мэтью Нейл

Основы программирования в Linux - Мэтью Нейл

Читать книгу Основы программирования в Linux - Мэтью Нейл, Мэтью Нейл . Жанр: Интернет.
Основы программирования в Linux - Мэтью Нейл
Название: Основы программирования в Linux
Дата добавления: 17 сентябрь 2020
Количество просмотров: 169
(18+) Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту для удаления материала.
Читать онлайн

Основы программирования в Linux читать книгу онлайн

Основы программирования в Linux - читать онлайн , автор Мэтью Нейл
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов
Перейти на страницу:

 QPushButton* button = new QPushButton("Ok", widget, "button");

 vbox->addWidget(button);

 resize(350, 200);

 connect(button, SIGNAL(clicked()), this, SLOT(Clicked()));

}

5. Затем приведен удобный метод для вывода состояния заданной кнопки QButton:

void Buttons::PrintActive(QButton *button) {

 if (button->isOn())

  std::cout << button->name() << " is checkedn";

 else

  std::cout" << button->name() << " is not checkedn";

}

void Buttons::Clicked(void) {

 PrintActive(checkbox);

 PrintActive(radiobutton1);

 PrintActive(radiobutton2);

 std::cout << "n";

}

int main(int argc, char **argv) {

 QApplication app(argc, argv);

 Buttons *window = new Buttons();

 app.setMainWidget(window);

 window->show();

 return app.exec();

}

Как это работает

Этот простой пример показывает, как опрашивать виджеты кнопок Qt разных типов. После создания все они по большей части действуют одинаково. Например, функция PrintActive демонстрирует, как получить состояние кнопки (включена или выключена). Обратите внимание на то, как она действует в случае запоминающих состояние кнопок разных типов, таких как флажки и переключатели (радиокнопки). В основном отличаются только вызовы для создания виджета кнопки. Радиокнопки, наиболее сложные (т.к. только одна в группе может быть включена), при создании требуют больше всего работы. В случае радиокнопок вы должны создать QButtonGroup для того, чтобы гарантировать активность только одной радиокнопки в группе в любой момент времени.

QComboBox

Переключатели (радиокнопки) — отличный способ, позволяющий пользователю выбрать из небольшого числа вариантов, скажем шести или меньше. Если вариантов больше шести, ситуация начинает выходить из-под контроля и становится еще более напряженной, когда количество вариантов растет, что приводит к ощутимому увеличению размера окна. В этом случае прекрасным решением может быть использование поля ввода с раскрывающимся меню, также называемое раскрывающимся списком (combo box). Варианты выводятся, когда вы щелкаете кнопкой мыши и открываете меню и количество вариантов при этом ограничено только удобством поиска в списке.

В виджете QComboBox сочетаются функциональные возможности виджетов QLineEdit и QPushButton и раскрывающихся меню, позволяя выбрать один вариант из неограниченного набора вариантов.

QComboBox может быть открытым, как для чтения и записи, так и только для чтения. Если он позволяет читать и записывать, пользователь может ввести новый вариант в дополнение к предлагаемым; в противном случае пользователь ограничен выбором варианта из раскрывающегося списка.

При создании виджета QComboBox можно указать, открыт ли он для чтения и записи или только для чтения, задавая логическое значение в конструкторе:

QComboBox *combo = new QComboBox(TRUE, parent, "widgetname");

Передача значения TRUE переводит QComboBox в режим "чтение/запись". Остальные параметры — обычный указатель на родительский виджет и имя создаваемого виджета.

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

Вы можете добавлять варианты по одному или набором, как тип QString или в стандартном формате char*.

Для вставки одного варианта вызовите функцию insertItem:

combo->insertItem(QString("An Item"), 1);

Приведенная функция принимает объект типа QString и номер позиции в списке. В данном случае 1 вставляет вариант в список первым.

Для добавления в конец списка задайте любое отрицательное целое число.

Гораздо чаще вы будете вставлять несколько элементов списка одновременно, для этого можно применить класс QStrList или, как показано далее, массив char*:

char* weather[] = {"Thunder", "Lightning", "Rain", 0};

combo->insertStrList(weather, 3);

И снова вы можете задать номер позиции вставляемых в список элементов.

Если в виджете QComboBox задан режим "чтение/запись", вводимые пользователем варианты могут автоматически вставляться в список. Это очень полезное, экономящее время свойство, избавляющее пользователя от повторного набора варианта, если он хочет уже введенный вариант использовать несколько раз.

Метод InsertionPolicy управляет позицией вводимого в список элемента. Вы можете выбрать одно из значений, приведенных в табл. 17.4.

Таблица 17.4

Значение Действие QComboBox::AtTop Вставляет вводимый в список элемент первым QComboBox::AtBottom Вставляет вводимый в список элемент последним QComboBox::AtCurrent Заменяет предварительно выбранный вариант в списке QComboBox::BeforeCurrent Вставляет вводимый элемент перед предварительно выбранным вариантом из списка QComboBox::AfterCurrent Вставляет вводимый элемент после предварительно выбранного варианта из списка QComboBox::NoInsertion Новый элемент не вставляется в список вариантов
Перейти на страницу:
Комментарии (0)