Название: Errors
Отправлено: almareta от Август 16, 2010, 09:27
Помогите пожалуйста исправить ошибки!Мне нужно на основании чужого кода, дописать и модернизировать программу.Пытаюсь запустить то, что уже есть, море ошибок, причем погуглила, результата никакого. supply.h#ifndef SUPPLY_H #define SUPPLY_H
#include <QMainWindow> #include <QCloseEvent> #include <QVBoxLayout> #include <QButtonGroup> #include <QPushButton> #include <QLabel> #include <QKeySequence> #include <QSqlTableModel> #include <QDialog>
class QTextEdit;
class supply:public QDialog { Q_OBJECT
public: supply(); ~supply(); QVBoxLayout *body; void setStatus(const char*); QPushButton *addButton(const char *text,const QKeySequence &key);
protected: void closeEvent(QCloseEvent *event);
private slots: void about(); void documentWasModified(); void task_filter(); void stuff_filter(); void job_list(); void invoice(); private: void createStatusBar(); void readSettings(); void writeSettings(); bool maybeSave(); QString strippedName(const QString &fullFileName);
QTextEdit *textEdit; QSqlTableModel *model; QString curFile;
QHBoxLayout *buttons; QPushButton *buttonHelp; QPushButton *buttonCancel; QLabel *status; int button;
};
class TaskFilter:public QDialog { Q_OBJECT
public: TaskFilter(); ~TaskFilter(); QVBoxLayout *body; QHBoxLayout *buttons; };
class StuffFilter:public QDialog { Q_OBJECT
public: StuffFilter(); ~StuffFilter(); QVBoxLayout *body; QHBoxLayout *buttons; };
class Invoice:public QDialog { Q_OBJECT
public: Invoice(); ~Invoice(); QVBoxLayout *body; QHBoxLayout *buttons; private slots: void print(); };
class JobList:public QDialog { Q_OBJECT
public: JobList(); ~JobList(); QVBoxLayout *body; QHBoxLayout *buttons; private slots: void print(); }; #endif
invoice.cpp#include <QtGui> #include <QHBoxLayout> #include <QtSql> #include "supply.h"
Invoice::Invoice() { int col=0;
setWindowTitle(tr("%1").arg(tr("Supply - накладная")));
QVBoxLayout *mainLayout = new QVBoxLayout(); body = new QVBoxLayout(); mainLayout->addLayout(body); mainLayout->addSpacing(10);
QSqlTableModel *model = new QSqlTableModel; model->setTable("invoice_new"); model->setEditStrategy(QSqlTableModel::OnRowChange); model->select(); model->setHeaderData(col++, Qt::Horizontal, tr("Заказ")); model->setHeaderData(col++, Qt::Horizontal, tr("Зад#")); model->setHeaderData(col++, Qt::Horizontal, tr("Поз")); model->setHeaderData(col++, Qt::Horizontal, tr("Обозначение")); model->setHeaderData(col++, Qt::Horizontal, tr("Наименование")); model->setHeaderData(col++, Qt::Horizontal, tr("Материал")); model->setHeaderData(col++, Qt::Horizontal, tr("Размер")); model->setHeaderData(col++, Qt::Horizontal, tr("Кол-во")); model->setHeaderData(col++, Qt::Horizontal, tr("Получатель"));
QTableView *view = new QTableView(); view->setModel(model); view->show(); body->addWidget(view);
buttons = new QHBoxLayout(); QPushButton *but_ok = new QPushButton( "buttonCancel" ); but_ok->setText( tr("Сохранить+Печатать")); but_ok->setFocusPolicy(Qt::NoFocus); buttons->addWidget(but_ok); connect( but_ok, SIGNAL( clicked() ), this, SLOT( print() ) ); but_ok = new QPushButton( "buttonCancel" ); but_ok->setText( tr("Отмена")); but_ok->setFocusPolicy(Qt::NoFocus); buttons->addWidget(but_ok); connect( but_ok, SIGNAL( clicked() ), this, SLOT( close() ) ); mainLayout->addLayout(buttons); setLayout(mainLayout); }
Invoice::~Invoice() { }
void Invoice::print() { close(); }
job_list.cpp#include <QtGui> #include <QHBoxLayout> #include <QtSql> #include "supply.h" #include <QSqlQuery>
JobList::JobList() { int col=0; setWindowTitle(tr("%1").arg(tr("Supply - задание"))); QVBoxLayout *mainLayout = new QVBoxLayout(); body = new QVBoxLayout(); mainLayout->addLayout(body); mainLayout->addSpacing(10); // mainLayout->addStretch(10); QSqlQuery query; query.exec("delete from job_list_new"); query.exec("insert into job_list_new (ordernum,tasknum,position,nick,name,stuff_name,stuff_size,qty,jobqty) (select ordernum,tasknum,position,nick,name,'','',qty,qty from tasklist)"); QSqlTableModel *model = new QSqlTableModel; model->setTable("job_list_new"); model->setEditStrategy(QSqlTableModel::OnRowChange); model->select(); model->setHeaderData(col++, Qt::Horizontal, tr("Заказ")); model->setHeaderData(col++, Qt::Horizontal, tr("Зад#")); model->setHeaderData(col++, Qt::Horizontal, tr("Поз")); model->setHeaderData(col++, Qt::Horizontal, tr("Обозначение")); model->setHeaderData(col++, Qt::Horizontal, tr("Наименование")); model->setHeaderData(col++, Qt::Horizontal, tr("Материал")); model->setHeaderData(col++, Qt::Horizontal, tr("Размер")); model->setHeaderData(col++, Qt::Horizontal, tr("Кол-во надо")); model->setHeaderData(col++, Qt::Horizontal, tr("Кол-во сделать"));
QTableView *view = new QTableView(); view->setModel(model); view->show(); body->addWidget(view);
buttons = new QHBoxLayout(); QPushButton *but_ok = new QPushButton( "buttonCancel" ); but_ok->setText( tr("Печатать ярлыки")); but_ok->setFocusPolicy(Qt::NoFocus); buttons->addWidget(but_ok); connect( but_ok, SIGNAL( clicked() ), this, SLOT( print() ) ); but_ok = new QPushButton( "buttonCancel" ); but_ok->setText( tr("Отмена")); but_ok->setFocusPolicy(Qt::NoFocus); buttons->addWidget(but_ok); connect( but_ok, SIGNAL( clicked() ), this, SLOT( close() ) ); mainLayout->addLayout(buttons); setLayout(mainLayout); }
JobList::~JobList() { }
void JobList::print() { close(); }
main.cpp#include <QApplication> #include <QMessageBox> #include <QTextCodec> #include <QSqlDatabase> #include <QSqlError> #include <QSqlQuery>
#include "supply.h"
int initdb() { QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); db.setDatabaseName("chaos"); // QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); // db.setDatabaseName(":memory:"); if (!db.open()) { QMessageBox::critical(0, qApp->tr("Cannot open database"), qApp->tr("Unable to establish a database connection.\n" "This example needs SQLite support. Please read " "the Qt SQL driver documentation for information how " "to build it.\n\n" "Click Cancel to exit."), QMessageBox::Cancel); return false; } return true; }
int main(int argc, char *argv[]) { // Q_INIT_RESOURCE(application); QApplication app(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8")); initdb(); supply * mw = new supply(); mw->show(); return app.exec(); }
stuff_filter.cpp#include <QtGui> #include <QHBoxLayout> #include <QtSql> #include "supply.h"
StuffFilter::StuffFilter() { int col=0; setWindowTitle(tr("%1").arg(tr("Supply - материалы"))); QVBoxLayout *mainLayout = new QVBoxLayout(); body = new QVBoxLayout(); mainLayout->addLayout(body); mainLayout->addSpacing(10); // mainLayout->addStretch(10); QSqlTableModel *model = new QSqlTableModel; model->setTable("stuff_filter"); model->setEditStrategy(QSqlTableModel::OnRowChange); model->select(); model->setHeaderData(col++, Qt::Horizontal, tr("Код")); model->setHeaderData(col++, Qt::Horizontal, tr("Наименование")); QTableView *view = new QTableView(); view->setModel(model); view->show(); body->addWidget(view);
buttons = new QHBoxLayout(); QPushButton *but_ok = new QPushButton( "buttonCancel" ); but_ok->setText( tr("OK")); but_ok->setFocusPolicy(Qt::NoFocus); buttons->addWidget(but_ok); connect( but_ok, SIGNAL( clicked() ), this, SLOT( close() ) ); mainLayout->addLayout(buttons); setLayout(mainLayout); }
StuffFilter::~StuffFilter() { }
supply.cpp#include <QtGui> #include "supply.h"
#include <QCloseEvent> #include <QGroupBox> #include <QGridLayout> #include <QHBoxLayout> #include <QList> #include <QtSql> #include <QIcon>
supply::supply() { QHBoxLayout *hlay; QLabel *label; QPushButton *butt; int col=0; // textEdit = new QTextEdit; // setCentralWidget(textEdit);
resize(800,600); setWindowTitle(tr("%1").arg(tr("Supply - снабжулики"))); setWindowIcon(QIcon("logo.gif")); QVBoxLayout *mainLayout = new QVBoxLayout(); body = new QVBoxLayout(); mainLayout->addLayout(body); mainLayout->addSpacing(10); // mainLayout->addStretch(10); hlay = new QHBoxLayout(); body->addLayout(hlay); label = new QLabel(tr("Фильтр по материалу"), this); hlay->addWidget(label); model = new QSqlTableModel; model->setTable("tasklist"); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->select(); model->setHeaderData(col++, Qt::Horizontal, tr("Заказ")); model->setHeaderData(col++, Qt::Horizontal, tr("Зад#")); model->setHeaderData(col++, Qt::Horizontal, tr("Поз")); model->setHeaderData(col++, Qt::Horizontal, tr("Обозначение")); model->setHeaderData(col++, Qt::Horizontal, tr("Наименование")); model->setHeaderData(col++, Qt::Horizontal, tr("Материал")); model->setHeaderData(col++, Qt::Horizontal, tr("Размер")); model->setHeaderData(col++, Qt::Horizontal, tr("Кол-во")); QTableView *view = new QTableView(); view->setModel(model); view->show(); body->addWidget(view); buttons = new QHBoxLayout(); buttonHelp = new QPushButton( "buttonHelp" ); buttonHelp->setText( tr("F1-Справка")); buttonHelp->setShortcut( Qt::Key_F1 ); buttonHelp->setFocusPolicy(Qt::NoFocus); connect( buttonHelp, SIGNAL( clicked() ), this, SLOT( about() ) ); buttons->addWidget(buttonHelp);
buttons->addStretch(10);
buttonCancel = new QPushButton( "buttonCancel" ); buttonCancel->setText( tr("F10-Выход")); buttonCancel->setShortcut( Qt::Key_F10 ); buttonCancel->setFocusPolicy(Qt::NoFocus); buttons->addWidget(buttonCancel); connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( close() ) ); mainLayout->addLayout(buttons); // createStatusBar(); // mainLayout->addSpacing(10); status = new QLabel( this ); setStatus("Слушаюсь и повинуюсь!!!"); status->setFrameStyle( QFrame::Panel | QFrame::Sunken ); status->setFixedHeight( status->sizeHint().height() ); status->setAlignment( Qt::AlignVCenter | Qt::AlignLeft ); mainLayout->addWidget( status ); // topLayout->activate(); button=1; setLayout(mainLayout); butt=addButton("F2-Мат.Фильтр", Qt::Key_F2 ); connect( butt, SIGNAL( clicked() ), this, SLOT( stuff_filter() ) ); butt=addButton("F3-Зак.Фильтр", Qt::Key_F3 ); connect( butt, SIGNAL( clicked() ), this, SLOT( task_filter() ) ); butt=addButton("F4-Счета", Qt::Key_F4 ); connect( butt, SIGNAL( clicked() ), this, SLOT( job_list() ) ); butt=addButton("F5-Оприходование", Qt::Key_F5 ); connect( butt, SIGNAL( clicked() ), this, SLOT( invoice() ) );
}
void supply::task_filter() { TaskFilter *w=new TaskFilter(); w->exec(); printf("tsk execed\n"); model->select(); }
void supply::stuff_filter() { StuffFilter *w=new StuffFilter(); w->exec(); printf("st execed\n"); model->select(); }
void supply::job_list() { JobList *w=new JobList(); w->exec(); printf("jl execed\n"); model->select(); }
void supply::invoice() { Invoice *w=new Invoice(); w->exec(); printf("inv execed\n"); model->select(); }
QPushButton *supply::addButton(const char *text,const QKeySequence &key) { QPushButton *b; b = new QPushButton(this); b->setText( tr(text)); b->setShortcut( key ); b->setFocusPolicy(Qt::NoFocus); buttons->insertWidget(button++,b); return b; }
void supply::setStatus(const char *m) { status->setText(tr(m)); }
void supply::closeEvent(QCloseEvent *event) { if (maybeSave()) { writeSettings(); event->accept(); } else { event->ignore(); } }
void supply::about() { QMessageBox::about(this, tr("About Application"), tr("<b>Supply v1.0</b> - рабочее место снабжения по металлу\n" "Copyright (C) 2008 by Олег Петькин")); }
void supply::documentWasModified() { setWindowModified(true); }
void supply::createStatusBar() { /* statusBar()->showMessage(tr("Слушаюсь и повинуюсь!!!"));*/ }
void supply::readSettings() { QSettings settings("TybydymSteed", "supply"); QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); QSize size = settings.value("size", QSize(400, 400)).toSize(); resize(size); move(pos); }
void supply::writeSettings() { QSettings settings("TybydymSteed", "supply"); settings.setValue("pos", pos()); settings.setValue("size", size()); }
bool supply::maybeSave() { /* if (textEdit->document()->isModified()) { int ret = QMessageBox::warning(this, tr("supply"), tr("Документ был изменен.\n" "Хотите ли Вы сохранить изменения?"), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); if (ret == QMessageBox::Yes) return save(); else if (ret == QMessageBox::Cancel) return false; }*/ return true; }
supply::~supply() {
}
task_filter.cpp#include <QtGui> #include <QHBoxLayout> #include <QtSql> #include "supply.h"
TaskFilter::TaskFilter() { // QHBoxLayout *hlay; // QLabel *label; int col=0; setWindowTitle(tr("%1").arg(tr("Supply - фильтрация"))); QVBoxLayout *mainLayout = new QVBoxLayout(); body = new QVBoxLayout(); mainLayout->addLayout(body); mainLayout->addSpacing(10); // mainLayout->addStretch(10); QSqlTableModel *model = new QSqlTableModel; model->setTable("task_filter"); model->setSort(0,Qt::AscendingOrder); model->setEditStrategy(QSqlTableModel::OnRowChange); model->select(); model->setHeaderData(col++, Qt::Horizontal, tr("Заказ")); model->setHeaderData(col++, Qt::Horizontal, tr("ПриорС")); model->setHeaderData(col++, Qt::Horizontal, tr("ПриорПо")); QTableView *view = new QTableView(); view->setModel(model); view->show(); body->addWidget(view);
buttons = new QHBoxLayout(); QPushButton *but_ok = new QPushButton( "buttonCancel" ); but_ok->setText( tr("OK")); but_ok->setFocusPolicy(Qt::NoFocus); buttons->addWidget(but_ok); connect( but_ok, SIGNAL( clicked() ), this, SLOT( close() ) ); mainLayout->addLayout(buttons); setLayout(mainLayout); }
TaskFilter::~TaskFilter() { }
Это что касается кода ) Ошибки следующие: make: *** Нет правила для сборки цели `/usr/share/qt4/mkspecs/linux-g++/qmake.conf', требуемой для `Makefile'. Останов. Exited with code 2. Error while building project src When executing build step 'Make'Вроде и библиотеки все стоят...
Название: Re: Errors
Отправлено: JamS007 от Август 16, 2010, 09:38
Сделайте, пожалуйста, работу за меня...
А если серьйозно - по приведенной ошибке подозреваю, что проект собирался на линуксе, а сейчас его мучают под виндой. Могу порекомендовать пересобрать проект по новому, сугубо с исходников. Также убедись, что в .pro файле есть ссылки на все файлы. Посмотри настройки сборки проекта, а также этапы сборки. После чего - qmake.
А вобще, в QtCreator есть такая функция хорошая, называеться "Copy". С ее помощью можно копировать ошибки, и вставлять прямо в поле ввода гугла. Иногда очень помогает.
Название: Re: Errors
Отправлено: Nimbus от Август 16, 2010, 09:46
Точнее проще удалить все файлы из проекта, кроме .h, .cpp, .pro ну и ещё там может qrc и имаги тоже не нужно удалять. Потом через Creator открыть .pro и посмотреть чтобы в нём не было ничего лишнего и запустить сборку.
Название: Re: Errors
Отправлено: almareta от Август 16, 2010, 10:38
"Сделайте, пожалуйста, работу за меня..." я что-то не вижу у себя такой просьбы.
Проект делался и "мучается" на Linux. "причем погуглила, результата никакого." эту фразу я так понимаю вы тоже не заметили.
Удалила - не помогло
Название: Re: Errors
Отправлено: kibsoft от Август 16, 2010, 10:42
Попробуй поставить libqt4-dev. Ну и все заново закумэйкить и собрать.
Название: Re: Errors
Отправлено: almareta от Август 16, 2010, 11:05
Как раз про это в гугле читала, переставила, попробовала собрать - то же самое всё ((
Название: Re: Errors
Отправлено: JamS007 от Август 16, 2010, 11:31
Простите, леди. Сообщение Ваше читал.
Вообще, лучше всего ставить Qt из бинарника с сайта Nokia а не из репов, и если проект не слишком секретный, выложите его сюда (в виде файлов), посмотрим, что у Вас там...
Название: Re: Errors
Отправлено: Пантер от Август 16, 2010, 11:41
qmake && make clean && make
Или запакуй проект и приложи к сообщению.
Название: Re: Errors
Отправлено: almareta от Август 16, 2010, 14:08
Проект
Название: Re: Errors
Отправлено: DOOMer от Август 16, 2010, 23:40
almareta, в вашем архиве не было .pro файла. После его создания командой qmake -project и добавление в свежесозданный bakcards.pro строки qt += sql -- все собралось (qmake && make) и запустилось, ругнувшись правда на отсутсвие соединения с базой данных.
Исправленный проект во вложении.
Название: Re: Errors
Отправлено: lit-uriy от Август 17, 2010, 03:58
>>отсутсвие чрклмекемя это что за зверь такой? :)
Название: Re: Errors
Отправлено: almareta от Август 17, 2010, 07:23
Спасибо!) Даже и не знаю куда он делся...
Да, мне тоже интересно, кто это? )
Название: Re: Errors
Отправлено: almareta от Август 17, 2010, 08:05
может вы имели ввиду файл типа *.sql?
Название: Re: Errors
Отправлено: DOOMer от Август 17, 2010, 08:34
>>отсутсвие чрклмекемя это что за зверь такой? :)
Это мутировавше непонятно под влиянием каких факторов "отсутстиве соединения" :)
|