السلام عليكم ورحمة الله وبركاته
هذا أول برنامج أقوم بتصميمه
وأرجو منكم إبداء آرائكم فيه
وجزاكم الله خيرا
السورس كود في المرفقات
يبدو أن هناك مشكلة بالمرفقات
هذا ملف 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>"));
}سأحاول رفعه مرة أخرى إن شاء الله