Qt бутони

QButton

Четвъртото издание на популярното ръководство обхваща основите на Linux програмирането. Разгледани са следните теми: използване на C/C++ библиотеки и стандартни инструменти за разработка, организиране на системни извиквания, вход/изход на файлове, взаимодействие на процеса, програмиране на обвивки, създаване на графични потребителски интерфейси с помощта на GTK+ или Qt инструменти, използване на сокети и др. Описани са компилирането на програми, свързването им с библиотеки и работата с терминален вход/изход. Дадени са техники за писане на приложения в средите GNOME® и KDE®, съхраняване на данни с помощта на MySQL® DBMS и програми за отстраняване на грешки. Книгата е добре структурирана, което прави ученето лесно и бързо.

За начинаещи Linux програмисти

Книга: Основи на Linux програмирането

Секции на тази страница:

Бутоните за джаджи са повсеместни и се различават малко по външен вид, използване и API в различните кутии с инструменти. Не е изненадващо, че Qt предлага стандартни PushButtons, CheckBoxes и радиобутони (или радиобутони) RadioButtons.

QButton:клас основен бутон

Всички модули за бутони в Qt са наследници на абстрактния клас QButton. Този клас има методи за запитване и превключване на включено/изключено състояние на бутона и задаване на текста или графичното представяне на бутона.

Никога няма да ви се наложи да боравите с приспособление QButton (не го бъркайте с приспособление QPushButton!), така че няма смисъл да предоставяте конструктори. По-долу са изброени няколко полезни функционални метода от този клас:

#includevirtual void QButton::setText(const QString&);virtual void QButton::setPixmap(const QPixmap&);boolQButton::isToggleButton() const;virtual void QButton::setDown(bool);bool QButton::isDown() const;bool QButton::isOn() const;enum QggleButton::ToggleStateToState Q Button::state() const;

Функциите isDown и isOn имат същата цел. И двете връщат TRUE, ако бутонът е бил натиснат или активиран.

Често трябва да деактивирате или оцветите опция, ако в момента не е налична. Можете да деактивирате всяка джаджа, включително QButton, като извикате метода QWidget::setEnable(FALSE).

QButton има три подкласа за бележка:

? QPushButton - обикновен уиджет с бутони, който извършва някакво действие при натискане на бутона на мишката;

? QCheckBox - джаджа за бутон, способна да променя състоянието от включено на изключено, за да посочи някакъв избор;

? QRadioButton е джаджа за бутони, обикновено използвана в група от подобни бутони, само един от които може да бъде активен в даден момент.

QPushButton

QPushButton е стандартен общ бутон, съдържащ текст като "OK" или "Cancel" и/или пикселна икона. Подобно на всички бутони от класа QButton, той излъчва сигнал за щракване, когато се активира, и обикновено се използва за свързване към слот и извършване на някакво действие.

Вече сте използвали QPushButton в примерите и има само още една интересна подробност за тази най-проста джаджа на Qt. QPushButton може да бъде променен от бутон без състояние на бутон за превключване (т.е. способен да се включва и изключва) чрез извикване на метода setToggleButton. (Не забравяйте, че пакетът GTK+ от предишната глава има различни приспособления за тази цел.)

За пълнота следните конструктори иполезни методи.

QCheckBox е бутон, който има състояние и може да се включва и изключва (или да се задава и нулира). Появата на QCheckBox зависи от стила на показване на прозореца на текущата система (Motif, Windows и т.н.), но обикновено се появява като квадратче за отметка с придружаващ текст вдясно.

Можете също така да настроите бутона QCheckBox на трето междинно състояние, което означава "без промяна". Полезно е в редки случаи, когато не можете да прочетете състоянието на селекцията, предоставена от бутона QCheckBox (и следователно да поставите или изчистите квадратчето за отметка сами), но искате да дадете на потребителя опцията да остави селекцията непроменена заедно с настройката и изчистването.

#includeQCheckBox(QW >QCheckBox(const QString& text, QW >bool QCheckBox::isChecked();vo >bool QCheckBox::isTristate();

QRadioButton

Радио бутоните са бутони за превключване, използвани за показване на изключителен избор, където е налична само една опция от група опции (спомнете си старите автомобилни радиостанции, където можете да натиснете само един блокиращ бутон). Самите бутони QRadioButton не се различават много от бутоните QCheckBox, тъй като групирането и ексклузивният избор се обработват от класа QButtonGroup, но основната разлика е, че те се изобразяват като кръгли бутони, а не квадратчета за отметка.

QButtonGroup е изпълним модул, който улеснява работата с групи бутони чрез предоставяне на удобни методи.

#includeQButtonGroup(QW >QButtonGroup(const QString& title, QW >const char * name = 0);int insert (QButton *button, int >void remove(QButton * бутон);вътрid(QButton *button) const;int count() const;int selectedId() const;

Използването на приспособлението QButtonGroup е лесно: то дори предлага опционална граница около бутоните, ако се използва конструкторът на заглавия.

Можете да добавите бутон към QButtonGroup, като използвате метода за вмъкване или като зададете QButtonGroup като родителски модул на бутона. Можете да посочите идентификатор в метода за вмъкване, за да идентифицирате уникално всеки бутон в групата. Това е особено полезно, когато определяте кой бутон е избран, като функцията selectedId връща идентификатора на избрания бутон.

Всички QRadioButtons, добавени към група, автоматично стават изключителни бутони.

Ето прототипите на конструкторите QRadioButton и един уникален метод, който няма да бъде кой знае каква изненада:

#includeQRadioButton(QW >QRadioButton(const QString& text, QW >bool QRadioButton::isChecked();

Направете упражнение 17.5.

Упражнение 17.5. QButton Widget

Сега нека приложим наученото към примера с Qt бутони. Следната програма създава различни типове бутони (радио бутони, квадратчета за отметка и прости бутони), за да ви покаже как да използвате тези изпълними модули във вашите приложения.