Български English 简体中文 Spanish Ελληνικά
Русский

Как се използва QPushButton

Общ преглед

Чрез QPushButton [doc.qt.nokia.com] могат да създават и управляват бутони. Този клас е лесен за употреба и персонализиране, поради което е сред най-популярните класове в Qt. По принцип бутона показва текст, но също така може да показва и икона.

QPushButton наследява QAbstractButton [doc.qt.nokia.com], който наследява QWidget [doc.qt.nokia.com].

Сигнали

Наследени от QAbstractButton

  • void clicked ( bool checked = false )
  • void pressed ()
  • void released ()
  • void toggled ( bool checked )

Наследени от QWidget

  • void customContextMenuRequested ( const QPoint & pos )

Наследени от QObject

  • void destroyed ( QObject * obj = 0 )

Основна употреба

Текст

Текст на QPushButton може да бъде зададен при създаването му или чрез setText() [doc.qt.nokia.com]. За да достъпите текста, който е сложен в момента на бутона използвайте text() [doc.qt.nokia.com].

Икона

Както текст, така и икона може да се зададе при създаване на QPushButton. След това иконата може да бъде сменете посредством setIcon() [doc.qt.nokia.com]. За да достъпите иконата, която е сложена на бутон използвайте icon() [doc.qt.nokia.com]

Настройване на позиция и икона

To set the position and the size of the button use setGeometry() [doc.qt.nokia.com]. Ако желаете само да промените размера на бутона използвайте resize() [doc.qt.nokia.com].

Управление на бутона

QPushButton излючва сигнали, ако се настъпи някакво събитие. За да управлявате бутона трябва да свържете подходящия сигнал към слот:

  1. connect(m_pButton, SIGNAL(released()),this, SLOT(handleButton()));

Пример

Следният прост примерен код показва как се създава и използва QPushButton. Тестван е на Qt Symbian Simulator.

Създава се инстанция на QPushButton. Сигналът released() се свързва със слота handleButton(), който променя текста и размера на прозореца при първо натискате на бутона.

mainwindow.h

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3.  
  4. #include <QtGui/QMainWindow>
  5. #include <QPushButton>
  6.  
  7. namespace Ui {
  8.     class MainWindow;
  9. }
  10.  
  11. class MainWindow : public QMainWindow
  12. {
  13.     Q_OBJECT
  14. public:
  15.  
  16.     explicit MainWindow(QWidget *parent = 0);
  17.     virtual ~MainWindow();
  18.  
  19. private slots:
  20.  
  21.     void handleButton();
  22.  
  23. private:
  24.  
  25.     QPushButton* m_pButton;
  26. };
  27.  
  28. #endif // MAINWINDOW_H

mainwindow.cpp

  1. #include "mainwindow.h"
  2.  
  3. #include <QtCore/QCoreApplication>
  4.  
  5. MainWindow::MainWindow(QWidget *parent)
  6.     : QMainWindow(parent)
  7. {
  8.     //Create the button
  9.     m_pButton = new QPushButton("My Button", this);
  10.     //set size and location of the button
  11.     m_pButton->setGeometry(QRect( QPoint(100, 100),
  12.                                  QSize(200, 50) ));
  13.  
  14.     //Connect button signal to appropriate slot
  15.     connect(m_pButton, SIGNAL(released()),this, SLOT(handleButton()));
  16. }
  17.  
  18. void MainWindow::handleButton()
  19. {
  20.     //change the text
  21.     m_pButton->setText("Example");
  22.     //resize button
  23.     m_pButton->resize(100,100);
  24. }
  25.  
  26. MainWindow::~MainWindow()
  27. {
  28.  
  29. }

main.cpp

  1. #include "mainwindow.h"
  2.  
  3. #include <QtGui/QApplication>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.     QApplication app(argc, argv);
  8.  
  9.     MainWindow mainWindow;
  10.     mainWindow.showMaximized();
  11.     return app.exec();
  12. }

Categories: