Russian Qt Forum
Ноябрь 27, 2024, 05:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Errors  (Прочитано 7325 раз)
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'


Вроде и библиотеки все стоят...





Записан
JamS007
Гость
« Ответ #1 : Август 16, 2010, 09:38 »

Сделайте, пожалуйста, работу за меня...

А если серьйозно - по приведенной ошибке подозреваю, что проект собирался на линуксе, а сейчас его мучают под виндой. Могу порекомендовать пересобрать проект по новому, сугубо с исходников. Также убедись, что в .pro файле есть ссылки на все файлы. Посмотри настройки сборки проекта, а также этапы сборки. После чего - qmake.

А вобще, в QtCreator есть такая функция хорошая, называеться "Copy". С ее помощью можно копировать ошибки, и вставлять прямо в поле ввода гугла. Иногда очень помогает.
Записан
Nimbus
Гость
« Ответ #2 : Август 16, 2010, 09:46 »

Точнее проще удалить все файлы из проекта, кроме .h, .cpp, .pro ну и ещё там может qrc и имаги тоже не нужно удалять. Потом через Creator открыть .pro и посмотреть чтобы в нём не было ничего лишнего и запустить сборку.
Записан
almareta
Гость
« Ответ #3 : Август 16, 2010, 10:38 »

"Сделайте, пожалуйста, работу за меня..."
я что-то не вижу у себя такой просьбы.

Проект делался и "мучается" на Linux.
"причем погуглила, результата никакого." эту фразу я так понимаю вы тоже не заметили.

Удалила - не помогло
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #4 : Август 16, 2010, 10:42 »

Попробуй поставить libqt4-dev. Ну и все заново закумэйкить и собрать.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
almareta
Гость
« Ответ #5 : Август 16, 2010, 11:05 »

Как раз про это в гугле читала, переставила, попробовала собрать - то же самое всё ((
Записан
JamS007
Гость
« Ответ #6 : Август 16, 2010, 11:31 »

Простите, леди.
Сообщение Ваше читал.

Вообще, лучше всего ставить Qt из бинарника с сайта Nokia а не из репов, и если проект не слишком секретный, выложите его сюда (в виде файлов), посмотрим, что у Вас там...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Август 16, 2010, 11:41 »

qmake && make clean && make

Или запакуй проект и приложи к сообщению.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
almareta
Гость
« Ответ #8 : Август 16, 2010, 14:08 »

Проект
Записан
DOOMer
Чайник
*
Offline Offline

Сообщений: 95



Просмотр профиля
« Ответ #9 : Август 16, 2010, 23:40 »

almareta, в вашем архиве не было .pro файла. После его создания командой qmake -project и добавление в свежесозданный bakcards.pro строки qt += sql -- все собралось (qmake && make) и запустилось, ругнувшись правда на отсутсвие соединения с базой данных.

Исправленный проект во вложении.
« Последнее редактирование: Август 17, 2010, 08:32 от DOOMer » Записан

Linux x86_64 && Qt 5.4.0 && Qt 4.8.6t && GCC 4.9.2
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #10 : Август 17, 2010, 03:58 »

>>отсутсвие чрклмекемя
это что за зверь такой? Улыбающийся
Записан

Юра.
almareta
Гость
« Ответ #11 : Август 17, 2010, 07:23 »

Спасибо!) Даже и не знаю куда он делся...

Да, мне тоже интересно, кто это? )
Записан
almareta
Гость
« Ответ #12 : Август 17, 2010, 08:05 »

может вы имели ввиду файл типа *.sql?
Записан
DOOMer
Чайник
*
Offline Offline

Сообщений: 95



Просмотр профиля
« Ответ #13 : Август 17, 2010, 08:34 »

>>отсутсвие чрклмекемя
это что за зверь такой? Улыбающийся
Это мутировавше непонятно под влиянием каких факторов "отсутстиве соединения"
 Улыбающийся
Записан

Linux x86_64 && Qt 5.4.0 && Qt 4.8.6t && GCC 4.9.2
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 23.