در قسمت اول آموزش C++/Qt از فصل دوم این سری آموزشی کوتاه به معرفی کوتاه برنامهای ساده در C++ و Qt پرداختیم در این قسمت به بررسی چند دستور دیگر در Qt خواهیم پرداخت. لازم به ذکر است این آموزش از این قسمت به بعد با نسخهی Qt از 5 نیز سازگاری دارد. البته کدهای گذشته نیز ممکن است چنین باشند یا نباشند!
در این قسمت برنامهای را خواهیم نوشت که دارای یک کلاس Commiunicate است که به همراه فایل Main در برنامه استفاده شده است کلاس فوق دارای دو فایل cpp و h است که چگونگی رفتار آنان و نحوهی کارکرد آنان را باید از قبل و برنامهنویسی C++ بلد باشید!
ابتدا فایل communicate.h را با مقادیر زیر بسازید:
#ifndef COMMUNICATE_H #define COMMUNICATE_H #include <QWidget> #include <QApplication> #include <QPushButton> #include <QLabel> class Communicate : public QWidget { Q_OBJECT public: Communicate(QWidget *parent = 0); private slots: void OnPlus(); void OnMinus(); private: QLabel *label; }; #endif
سپس فایل cpp را نیز ایجاد کنید:
#include "communicate.h" Communicate::Communicate(QWidget *parent) : QWidget(parent) { QPushButton *plus = new QPushButton("+", this); plus->setGeometry(50, 40, 75, 30); QPushButton *minus = new QPushButton("-", this); minus->setGeometry(50, 100, 75, 30); label = new QLabel("0", this); label->setGeometry(190, 80, 20, 30); connect(plus, SIGNAL(clicked()), this, SLOT(OnPlus())); connect(minus, SIGNAL(clicked()), this, SLOT(OnMinus())); } void Communicate::OnPlus() { int val = label->text().toInt(); val++; label->setText(QString::number(val)); } void Communicate::OnMinus() { int val = label->text().toInt(); val--; label->setText(QString::number(val)); }
همانطور که می بینید در کد cpp ما یک برچسب Label داریم که در Qt با QLabel شناخت میشود سپس دو عدد QButton را نیز ایجاد کرده ایم. سپس با دستور connect که جلسهی قبل بررسی کردیم دو دکمه را به تابعهای مناسب متصل کردهایم.
در تابعها نیز مقدار داخل Label را ++ یا — کردهایم. سپس در داخل فایل main کلاس را صدا زدهایم. در اینجا شئ windows یک instance از کلاس ماست.
#include "communicate.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); Communicate window; window.setWindowTitle("Communicate"); window.show(); return app.exec(); }
بعد از آن برنامه را اجرا کنید!