انجمن کاربران لینوکس ایران - تکنوتاکس سابق

نسخه ي کامل: اولین برنامه با Qt
شما در حال مشاهده نسخه ي متني اين صفحه هستيد. مشاهده نسخه کامل تر با قالب بندي صحيح

مهمان

خوب من تازه دارم Qt یاد می گیرم و ناواردم. الان می خوام یه برنامه بسازم که یه دکمه داشته باشه و یه ورودی برای یه کاراکتر و کاربر مثلا حرف a را بنویسه و با هر بار فشار اون دکمه اون کاراکتر یکی بیشتر بشه یعنی بشه b و همین طور ادامه بده.

مهمان

توضیح بیشتر بده تا بهت نشون بدم. چون ممکنه یه چیزی بنویسم بعد بگی اونی که میخواستی نبوده.
یک ورودی TextBox میخوای که کاربر توش هرچی وارد کنه و بعد وقتی دکمه رو میزنه چیزهایی که قبلا در TextBox توسط کاربر تایپ شدن مدام در همون TextBox تکرار بشن؟ یا اینکه میخوای کاربر فقط توانایی وارد کردن یک کاراکتر رو داشته باشه و نتونه چنتا کاراکتر وارد کنه؟

مهمان

والا اون چیزی که می خواستم بنویسم همینه که گفتی اما در اصل می خواستم با یاد گرفتنش یه چیز دیگه بنویسم که مثلا مشخصات یه نفر را بگیره از اون textbox و تو یه آرایه ذخیره کنه .

مهمان

اگه هر دوشون را بنویسی خیلی خوب میشه.

مهمان

این برنامه یک ورودی خطی متن داره و دو دکمه. یک دکمه متن موجود در ورودی متن رو ذخیره میکنه و دکمهء دیگر متن ذخیره شده رو به ورودی متن برمیگردونه.
در اینجا ما از QString برای ذخیرهء متن استفاده کردیم که نوع رشته ای Qt هست و خیلی کاربرد داره.

main.cpp

کد :
#include <QApplication>
#include "window.h"


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    Window *win=new Window();
    win->show();
    
    return app.exec();
}

window.h

کد :
#include <QLineEdit>
#include <QPushButton>
#include <QGridLayout>
#include <QString>

class Window : public QWidget
{
     Q_OBJECT

public:
Window(QWidget *parent = 0) {
    textbox=new QLineEdit;
    storeBtn=new QPushButton("Store");
    restoreBtn=new    QPushButton("Restore");
    QGridLayout *layout = new QGridLayout;
    layout->addWidget(textbox, 0, 0, 1, 2);    
    layout->addWidget(storeBtn, 1, 0);
    layout->addWidget(restoreBtn, 1, 1);
    setLayout(layout);
    connect(storeBtn, SIGNAL(clicked()), this, SLOT(store()));
    connect(restoreBtn, SIGNAL(clicked()), this, SLOT(restore()));
}


private slots:
void store() {
userInput=textbox->text();
}
void restore() {
textbox->setText(userInput);
}


private:
     QLineEdit *textbox;
     QPushButton *storeBtn;
     QPushButton *restoreBtn;
     QString userInput;
};