smemamian
یک شنبه 25 فروردین 1392, 19:34 عصر
سلام دوستان
من یک برنامه ی دفترچه تلفن از روی کتاب Foundations_of_Qt_Development نوشتم به صورت زیر :
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
const QString name() const;
void setName( const QString& );
const QString number() const;
void setNumber( const QString& );
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QObject>
#include <QMainWindow>
#include "dialog.h"
#include <QDialog>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void addItem();
void editItem();
void deleteItem();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
const QString Dialog::name() const
{
return ui->lineEdit->text().replace("--","").trimmed();
}
void Dialog::setName( const QString&name )
{
ui->lineEdit->setText(name);
}
const QString Dialog::number() const
{
return ui->lineEdit_2->text().replace("--","").trimmed();
}
void Dialog::setNumber( const QString&number )
{
ui->lineEdit_2->setText(number);
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QObject>
#include "dialog.h"
#include <QMessageBox>
#include <QDialog>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QObject::connect( ui->addButton, SIGNAL(clicked()), this, SLOT(addItem()) );
QObject::connect( ui->editButton, SIGNAL(clicked()), this, SLOT(editItem()) );
QObject::connect( ui->deleteButton, SIGNAL(clicked()), this, SLOT(deleteItem()) );
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::addItem()
{
Dialog dll(this);
if(dll.exec() == QDialog::accepted())
{
ui->list->addItem(dll.name() + "--" + dll.number());
}
}
void MainWindow::editItem()
{
if(!ui->list->currentItem())
return ;
QStringList part = ui->list->currentItem()->text().split("--");
Dialog dlg(this);
dlg.setName(part[0].trimmed());
dlg.setNumber(part[1].trimmed());
if(dlg.exec() == QDialog::accepted())
{
ui->list->currentItem()->setText(dlg.name() + "--" + dlg.number());
}
}
void MainWindow::deleteItem()
{
if(ui->list->currentItem()->isSelected())
delete ui->list->currentItem();
else
QMessageBox::warning(this,"Select...","plz selected an item");
}
این تصویر mainwindow :
http://axgig.com/images/71193189994197850201.jpg (http://barnamenevis.org/)
این تصویر dialog :
http://axgig.com/images/22306888720183653884.jpg (http://http://barnamenevis.org/)
در mainwidnow.cpp خط 26 و 41 خطای زیر رو میده :
C:\Users\mainwindow.cpp:26: error: C2352: 'QDialog::accepted' : illegal call of non-static member functionتوی کتاب گفته بود در فروم dialog سیگنال و اسلات فروم dialog به شکل زیر باشه :
http://axgig.com/images/01763505724608727284.jpg (http://google.com/)
ولی من چون سیگنال accepted و rejected نداشتم به شکل زیر انجام دادم ! :
http://axgig.com/images/00665685663716073506.jpg (http://barnamenevis.org)
من یک برنامه ی دفترچه تلفن از روی کتاب Foundations_of_Qt_Development نوشتم به صورت زیر :
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
const QString name() const;
void setName( const QString& );
const QString number() const;
void setNumber( const QString& );
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QObject>
#include <QMainWindow>
#include "dialog.h"
#include <QDialog>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void addItem();
void editItem();
void deleteItem();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
const QString Dialog::name() const
{
return ui->lineEdit->text().replace("--","").trimmed();
}
void Dialog::setName( const QString&name )
{
ui->lineEdit->setText(name);
}
const QString Dialog::number() const
{
return ui->lineEdit_2->text().replace("--","").trimmed();
}
void Dialog::setNumber( const QString&number )
{
ui->lineEdit_2->setText(number);
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QObject>
#include "dialog.h"
#include <QMessageBox>
#include <QDialog>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QObject::connect( ui->addButton, SIGNAL(clicked()), this, SLOT(addItem()) );
QObject::connect( ui->editButton, SIGNAL(clicked()), this, SLOT(editItem()) );
QObject::connect( ui->deleteButton, SIGNAL(clicked()), this, SLOT(deleteItem()) );
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::addItem()
{
Dialog dll(this);
if(dll.exec() == QDialog::accepted())
{
ui->list->addItem(dll.name() + "--" + dll.number());
}
}
void MainWindow::editItem()
{
if(!ui->list->currentItem())
return ;
QStringList part = ui->list->currentItem()->text().split("--");
Dialog dlg(this);
dlg.setName(part[0].trimmed());
dlg.setNumber(part[1].trimmed());
if(dlg.exec() == QDialog::accepted())
{
ui->list->currentItem()->setText(dlg.name() + "--" + dlg.number());
}
}
void MainWindow::deleteItem()
{
if(ui->list->currentItem()->isSelected())
delete ui->list->currentItem();
else
QMessageBox::warning(this,"Select...","plz selected an item");
}
این تصویر mainwindow :
http://axgig.com/images/71193189994197850201.jpg (http://barnamenevis.org/)
این تصویر dialog :
http://axgig.com/images/22306888720183653884.jpg (http://http://barnamenevis.org/)
در mainwidnow.cpp خط 26 و 41 خطای زیر رو میده :
C:\Users\mainwindow.cpp:26: error: C2352: 'QDialog::accepted' : illegal call of non-static member functionتوی کتاب گفته بود در فروم dialog سیگنال و اسلات فروم dialog به شکل زیر باشه :
http://axgig.com/images/01763505724608727284.jpg (http://google.com/)
ولی من چون سیگنال accepted و rejected نداشتم به شکل زیر انجام دادم ! :
http://axgig.com/images/00665685663716073506.jpg (http://barnamenevis.org)