الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هذا أول مشروع لي - المؤقت

بدأه محمـد عواد في 1 نوفمبر 2010 · 1 رد · 1,194 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

هذا أول برنامج أقوم بتصميمه

وأرجو منكم إبداء آرائكم فيه

وجزاكم الله خيرا

السورس كود في المرفقات

يبدو أن هناك مشكلة بالمرفقات

هذا ملف timer.pro

      QT += sql
SOURCES += \
    main.cpp \
    mainwindow.cpp \
    addnewtime.cpp

HEADERS += \
    mainwindow.h \
    addnewtime.h

وهذا ملف main.cpp

   #include <QApplication>
#include <QTextCodec>
#include <mainwindow.h>


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
//    QApplication::setLayoutDirection(Qt::RightToLeft);
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    MainWindow mainWin;
    mainWin.resize(400 , 400);
    mainWin.show();
    return app.exec();
}

وهذا ملف addnewtime.h

      #ifndef ADDNEWTIME_H
#define ADDNEWTIME_H
#include <QtGui>
#include <QtSql>
QT_BEGIN_NAMESPACE
QT_END_NAMESPACE

class AddNewTime :public QDialog
{
    Q_OBJECT
public:
    AddNewTime(QWidget *parent=0);

protected:

private slots:
    void gettime();

private:
    QLineEdit *wasflineedit;
    QTimeEdit *timeedit;
    QPushButton *addBtn;
    QPushButton *acceptbutton;

};

#endif // ADDNEWTIME_H

وهذا ملف mainwindow.h

          #ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui>
#include <QSqlTableModel>



QT_BEGIN_NAMESPACE
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);


protected:
        void timerEvent(QTimerEvent*);
public slots:

private slots:
    void mappernext();
    void deletealltimes();
    void choicetimeFi();
    void about();
private:
    QPushButton *nexttimeBtn;
    QPushButton *deletealltimesBtn;
    QPushButton *aboutBtn;
    QPushButton *addtimesBnt;
    QLineEdit *line1;
    QLineEdit *currenttimeline;
    QTimeEdit *timeedit;
    QLabel *dateLabel;
    QLabel *labellabel;
    QSound *sound;
    QSqlDatabase db;
    QTableView *tableview;
    QSqlTableModel *model;
    QDataWidgetMapper *mapper;
    QGroupBox *gr1;


};

#endif // MAINWINDOW_H

وهذا ملف addnewtime.cpp

      #include "addnewtime.h"
#include <QtGui>
#include <QtSql>
#include "mainwindow.h"

AddNewTime::AddNewTime(QWidget *parent)
    :QDialog (parent)
{
    QFont font;
    font.setFamily(QString::fromUtf8("Times New Roman"));
    font.setPointSize(22);
    font.setBold(true);


    wasflineedit = new QLineEdit;
    timeedit = new QTimeEdit;
    addBtn = new QPushButton("أضف موعدا جديدا");
    acceptbutton = new QPushButton("أغلق هذه النافذة");

    timeedit->setFont(font);


    QVBoxLayout *layout1 = new QVBoxLayout();
    layout1->addWidget(wasflineedit);
    layout1->addWidget(timeedit);
    layout1->addWidget(addBtn);
    layout1->addWidget(acceptbutton);

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addLayout(layout1);
    setLayout(mainLayout);

    resize(200 , 200);
    connect(acceptbutton,SIGNAL(clicked()),this,SLOT(accept()));
    connect(addBtn,SIGNAL(clicked()),this,SLOT(gettime()));
}

void AddNewTime::gettime()
{
    if (wasflineedit->text().isEmpty()){
        QMessageBox::information(this, tr("فضلا"),
                                 tr("<b>"
                                    "<h3><center>أدخل وصف الموعد الجديد في المربع العلوي</center></h3>"
                                    "</b>"));}
    else{
//        add new to database
        QSqlQuery query;

        query.prepare("insert into main (name,time)"
                      "values (:name,:time)");
        query.bindValue(":name",wasflineedit->text());
        query.bindValue(":time",timeedit->text());
        query.exec();
        QMessageBox::information(this, tr("تم"),
                                 tr("<b>"
                                    "<h3><center>تم إضافة الموعد</center></h3>"
                                    "</b>"));
        wasflineedit->clear();
    }


}

وهذا ملف وهذا ملف mainwindow.cpp

        #include "mainwindow.h"
#include "addnewtime.h"
#include <QtSql>
#include <QtGui>

MainWindow::MainWindow(QWidget *parent)
    :QMainWindow (parent)
{
    db=QSqlDatabase::addDatabase("QSQLITE");
    db.setHostName("localhost");
    db.setDatabaseName("data.db");
    db.setUserName("");
    db.setPassword("");

    if (!db.open()) {
        QMessageBox::critical(0, "Cannot open database", "Unable to establish a database connection.\n""This Application needs SQLITE support.\n\n""Click Cancel to exit.", QMessageBox::Cancel);
    }
    QSqlQuery query;
    query.exec("CREATE TABLE main(id varchar(5) PRIMARY KEY,"
               "name nvarchar(10),"
               "time varchar(10))");
    query.exec("insert into main values('1','موعد', '١٢:٠٠:٠٠ AM')");

    QFont font;
    font.setFamily(QString::fromUtf8("Times New Roman"));
    font.setPointSize(22);
    font.setBold(true);

    gr1 = new QGroupBox;
    model = new QSqlTableModel;
    line1 = new QLineEdit;
    sound = new QSound("Boo.wav",this);
    mapper = new QDataWidgetMapper(this);
    timeedit = new QTimeEdit;
    aboutBtn = new QPushButton("عن البرنامج");
    dateLabel = new QLabel(gr1);
    tableview = new QTableView;
    labellabel = new QLabel(trUtf8("اضغط الزر المجاور للانتقال إلى التذكير التالي"));
    addtimesBnt = new QPushButton;
    nexttimeBtn = new QPushButton;
    currenttimeline = new QLineEdit(gr1);
    deletealltimesBtn = new QPushButton;
    QWidget *centralWidget = new QWidget;

    gr1->setFixedHeight(60);
    gr1->setTitle("الوقت الحالي والتاريخ");
    gr1->setAlignment(Qt::AlignHCenter);
    model->setTable("main");
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    model->select();
    tableview->setModel(model);
    timeedit->hide();
    timeedit->setFixedHeight(50);
    timeedit->setFont(font);
    timeedit->setReadOnly(true);
    timeedit->setButtonSymbols(QTimeEdit::NoButtons);
    deletealltimesBtn->setText("حذف جميع المواعيد");
    addtimesBnt->setText("إضافة المواعيد");

    QHBoxLayout *currenttimelayout = new QHBoxLayout();
    currenttimelayout->addWidget(currenttimeline);
    currenttimelayout->addStretch(0);
    currenttimelayout->addWidget(dateLabel);
    currenttimelayout->addWidget(timeedit);
    gr1->setLayout(currenttimelayout);

    QHBoxLayout *buttonlayout = new QHBoxLayout();
    buttonlayout->addWidget(aboutBtn);



    QHBoxLayout *linelayout = new QHBoxLayout();
    linelayout->addWidget(deletealltimesBtn);
    linelayout->addWidget(addtimesBnt);


    QHBoxLayout *linelayout2 = new QHBoxLayout();
    linelayout2->addWidget(line1);
    linelayout2->addWidget(nexttimeBtn);
    linelayout2->addWidget(labellabel);

    QHBoxLayout *tablelayout = new QHBoxLayout();
    tablelayout->addWidget(tableview);

    QVBoxLayout *mainLayout = new QVBoxLayout(centralWidget);
    mainLayout->addWidget(gr1);
    mainLayout->addLayout(linelayout);
    mainLayout->addLayout(linelayout2);
    mainLayout->addLayout(tablelayout);
    mainLayout->addLayout(buttonlayout);


    setCentralWidget(centralWidget);
    startTimer(1000);	// one second

    connect(nexttimeBtn,SIGNAL(clicked()),this,SLOT(mappernext()));
    connect(deletealltimesBtn,SIGNAL(clicked()),this,SLOT(deletealltimes()));
    connect(addtimesBnt,SIGNAL(clicked()),this,SLOT(choicetimeFi()));
    connect(aboutBtn,SIGNAL(clicked()),this,SLOT(about()));


mapper->setModel(model);
mapper->addMapping(line1,model->fieldIndex("time"));
mapper->toFirst();
line1->setStyleSheet(QString::fromUtf8("background-color: rgb(75, 255, 192);"));
currenttimeline->setStyleSheet(QString::fromUtf8("background-color: rgb(192, 255, 75);"));
}

void MainWindow::timerEvent(QTimerEvent* event)
{
    QTime time=QTime::currentTime();
//    QString stime=time.toString("h:m:s A");
    QDate date=QDate::currentDate();
    QString sdate=date.toString("ddd dd MM yyyy");
    dateLabel->setText(sdate);
    timeedit->setTime(time);
    currenttimeline->setText(timeedit->text());

    if (line1->text() == currenttimeline->text())
    {
        sound->play();
        QMessageBox::about(this, ("تم"),
                           ("<b>"
                            "<h3><center>حان الوقت</center></h3>"
                            "<BR>-"
                            "</b>"));
        mapper->toNext();
    }
}

void MainWindow::mappernext()
{
    mapper->toNext();
}

void MainWindow::deletealltimes()
{
    QMessageBox::warning(this, trUtf8("تنبيه"), trUtf8("هل أنت متأكد ") , QMessageBox::Yes | QMessageBox::No);
    QSqlQuery query;
    query.exec("Delete from main");
    model->clear();
    model->setTable("main");
    model->select();
    mapper->toFirst();
}

void MainWindow::choicetimeFi()
{
    AddNewTime* addnewtime=new AddNewTime(this);
    if ( addnewtime->exec() == QDialog::Accepted )
    {
        model->clear();
        model->setTable("main");
        model->select();
        mapper->toFirst();
    }
}
void MainWindow::about()
{
    QMessageBox::about(this, ("عن البرنامج"),
                       ("<b>"
                        "<h2><center>برنامج المؤقت</center></h2>"
                        "<h3><center>الإصدار الأول</center></h3>"
                        "<h4><center>البرنامج يخضع لرخصة جنو الحرة</center></h4>"
                        "<h3><center>GPL v2</center></h3>"
                        "<BR> مطور البرنامج"
                        "<BR>محمد عواد محمد"
                        "</b>"));
}

سأحاول رفعه مرة أخرى إن شاء الله

#2

رائع كمشروع اول :)

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…