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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 10 11 [12]
166  Qt / Общие вопросы / Бланшет-предварительное объявление класса : Сентябрь 28, 2009, 08:54
В книге во второй главе приводится пример предварительного объявления классов. Я попробовал сделать что-то похожее- не получилось. Вот код:
////dialogimpl.h
#ifndef DIALOGIMPL_H
#definr DIALOGIMPL_H
#include<QDialog>
#include "ui_dialog.h"
#include <QVector>
//class QVector<int>; //если без <int>, пишет, что нужен шаблон, если с <int>, то при объявлении
//ivec пишет, что вектор имеет "неполный тип"
class DialogImpl:public QDialog,public Ui::Dialog
{
Q_OBJECT
public:
DialogImpl(QWidget *parent=0,Qt::WFlags f=0);
private:
QVector,int> ivec;
private slots:
void fillVec();
};
#endif

////dialogimpl.cpp
#include "dialogimpl.h"
#include<QDebug>
DialogImpl::DialogImpl(QWidget *parent,Qt::WFlags f):QDialog(parent,f)
{
setupUi(this);
connect(Button,SIGNAL(clicked()),this,SLOT(fillVec()));
}
void DialogImpl::fillVec()
{
ivec.push_back(2);
qDebug()<<ivec[0];
}

в общем, все работает, только если в .h-файле включаю QVector.h
если, как рекомендует Бланшет (правильно, между прочим, рекомендует), то выдает ошибки.
Подскажите, как правильно предварительно объявить класс, а то если несколько файлов, да в каждом нужно упомянуть вектор, так не включать же его библиотеку везде?
167  Qt / Пользовательский интерфейс (GUI) / Re: перемещение по TableView-продолжение : Июль 01, 2009, 08:12
Спасибо! А ведь, что обидно-была такая мысль, даже написал connect после установки Model, а потом что-то засомневался и стер
168  Qt / Пользовательский интерфейс (GUI) / перемещение по TableView-продолжение : Июнь 30, 2009, 13:53
(Qt 4.5.1) Ета тема уже поднималась (http://www.prog.org.ru/topic_7117_0.html), а все равно ничего не получается. Делаю так же, как в теме по ссылке-в дизанере создал диалог, на нем лежит QTableView и QLineEdit. Таблица заполняется из запроса. Все отображается, и вот перемещение по таблице программа игнорирует-даже на Breapoint не попадает.
Вот исходники:
dialogimpl.h
Код:
class DialogImpl : public QDialog, public Ui::Dialog
{
Q_OBJECT
public:
  DialogImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
private:
  QString btnName;
private slots:
  void fillEdit(const QModelIndex &, const QModelIndex &);
protected:
  virtual bool start();
  virtual void closeEvent(QCloseEvent *event);
};

class MyModel:public QSqlQueryModel
{
Q_OBJECT
public:
  MyModel();
  Qt::ItemFlags flags(const QModelIndex &index) const;
  QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const;
private:
  void refresh();
};
dialogimpl.cpp
Код:
DialogImpl::DialogImpl( QWidget * parent, Qt::WFlags f) 
: QDialog(parent, f)
{
  setupUi(this);
  connect(tab_view->selectionModel(),SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),this,SLOT(fillEdit(const QModelIndex &, const QModelIndex &)));
  start();
  MyModel *model=new MyModel();
  tab_view->setModel(model);
}

MyModel::MyModel()
{
refresh();
}

Qt::ItemFlags MyModel::flags(const QModelIndex &index) const
{........}

QVariant MyModel::data(const QModelIndex &index,int role) const
{.........}

void MyModel::refresh()
{
  setQuery("SELECT ...FROM ....");
  setHeaderData(0,Qt::Horizontal,tr("..."));
  .....
}

bool DialogImpl::start()
{
  QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL3");
  ........
}

void DialogImpl::closeEvent(QCloseEvent *event)
{...}

void DialogImpl::fillEdit(const QModelIndex & current, const QModelIndex &previuos)
{
  int row=current.row();
  EInvNum->setText(QString::number(row));
}
Проблема, похоже ерундовая, но никак не пойму за что ухватиться. Помогите!
169  Qt / Печать / Re: не могу заставить работать NCReport : Февраль 05, 2009, 15:42
сил моих больше нет!!! Скачал ncreport-qt4-0.7.02.tar.gz, вроде не бинарник. qmake c make его вообще не компилирует-куча ошибок, qmake-qt4 c make долго что-то делает без ошибок, но кроме возможности просмотреть пример отчета (./ncreport n -preview) больше, кажется, ничего из этого не получается. Во всяком случае ни папки "bin", ни "lib" тут не появилось. Собственно, и дезайнера-то я там не нашел. Может плюнуть на этот NCReport? А как тогда сделать отчет?
170  Qt / Печать / Re: не могу заставить работать NCReport : Февраль 05, 2009, 06:56
вернул, как было файл /etc/ld.so.conf, создал ncreport.conf, положил в /etc/ld.so.conf.d, выполнил sudo ldconfig.
Ничего не заругадось, наверное все прошло как надо, однако ни демо, ни программа не компилируются-демо из-за отсутствия "runner", программа из-за "undefined reference to `QGraphicsScene::eventFilter(QObject*, QEvent*)".
Может, я как-то не так саму ncreport установил? Собственно, я просто распаковал архив. Пытался скомпилировать, qmake-qt4 вроде создал Makefile, а вот make дала ошибку
Cannot find file: src.pro.
make: *** [src//Makefile] Ошибка 2
171  Qt / Печать / Re: не могу заставить работать NCReport : Февраль 04, 2009, 15:53
1) Демо не скомпилировались (я ж писал, что нет папки "runner", а при компиляции ругается, что
make[1]: *** Нет правила для сборки цели `../../runner/ncrtestform.ui', требуемой для `uic/ui_ncrtestform.h'.  Останов.
make[1]: Leaving directory `/home/user/downloads/NCReport2/src/demos/CustomDataSource'
make: *** [sub-CustomDataSource-make_default] Ошибка 2

2)ldd выдал очень длинный список. Вот он:
linux-gate.so.1 =>  (0xffffe000)
        libQtScript.so.4 => /usr/lib/libQtScript.so.4 (0xb7df3000)
        libQtSql.so.4 => /usr/lib/libQtSql.so.4 (0xb7dab000)
        libmysqlclient_r.so.15 => /usr/lib/libmysqlclient_r.so.15 (0xb7bbe000)
        libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb7b90000)
        libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7b78000)
        libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xb7b37000)
        libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb79f4000)
        libQtXml.so.4 => /usr/lib/libQtXml.so.4 (0xb799a000)
        libQtGui.so.4 => /usr/lib/libQtGui.so.4 (0xb71ff000)
        libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb71dc000)
        libSM.so.6 => /usr/lib/libSM.so.6 (0xb71d4000)
        libICE.so.6 => /usr/lib/libICE.so.6 (0xb71bc000)
        libXi.so.6 => /usr/lib/libXi.so.6 (0xb71b4000)
        libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb71ac000)
        libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb71a5000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7135000)
        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb710a000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0xb70fc000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0xb700b000)
        libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0xb6e8b000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb6e75000)
        libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb6e70000)
        librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb6e67000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb6daa000)
        libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb6d92000)
        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb6d8e000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb6c9a000)
        libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb6c75000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb6c6a000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb6b20000)
        libpq.so.5 => /usr/lib/libpq.so.5 (0xb6b03000)
        libsqlite.so.0 => /usr/lib/libsqlite.so.0 (0xb6aaa000)
        libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0xb6a45000)
        libaudio.so.2 => /usr/lib/libaudio.so.2 (0xb6a2f000)
        libXt.so.6 => /usr/lib/libXt.so.6 (0xb69de000)
        libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb69d9000)
        libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb69cf000)
        libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb69cc000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb69ac000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0xb69a9000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb69a4000)
        /lib/ld-linux.so.2 (0x80000000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb691b000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0xb6918000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb68f3000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb68eb000)
        libkeyutils.so.1 => /lib/libkeyutils.so.1 (0xb68e8000)
        libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb68d5000)

солидно, но непонятно.
172  Qt / Печать / Re: не могу заставить работать NCReport : Февраль 04, 2009, 12:56
что-то вообще не то получается.
В /etc/ld.so.conf теперь такие строки:
include /etc/ld.so.conf.d/*.conf
include /home/user/downloads/NCReport2/lib/*   ///я добавил

делаю /etc/ld.so.conf и получаю длинную портянку с такого рода надписями

/sbin/ldconfig.real: �E����t is not a known library type
/sbin/ldconfig.real: ���4$�,i���ƋE�����T����E��$�����D�����t& is not a known library type
/sbin/ldconfig.real: b���D��<����U���T����D$ is not a known library type
/sbin/ldconfig.real: ���(����NjE���������E��$�k��������NjE������

На всякий случай запустил make, но результат был абсолютно тот же, что и до всех моих издевательств над ld.so.conf
173  Qt / Печать / Re: не могу заставить работать NCReport : Февраль 04, 2009, 07:37
find / -name ld.conf говорит, что такого файла у меня почему-то нет
174  Qt / Печать / не могу заставить работать NCReport : Февраль 03, 2009, 07:48
Исходные данные: KUbuntu 7.10, QT 4.3.2, ncreport скачал с http://nocisoft.com/download/ncreport/bin/NCReport_2.1.1_Linux_bin_Qt4.3.2.tar.gz.
Делаю отчет, как описывается в "Getting started Guide" в папке "Doc". Сделал форму с единственной кнопкой, которая запускает просмотр отчета. В .pro-файле есть строки

INCLUDEPATH = /home/user/downloads/NCReport2/include
LIBS += -lncreport -L/home/user/downloads/NCReport2/lib -L/usr/local/bin

запускаю make, выдает

g++  -o bin/tabl build/dialogimpl.o build/main.o build/moc_dialogimpl.o    -L/usr/lib -lncreport -L/home/user/downloads/NCReport2/lib -L/usr/local/bin -lQtSql -lQtXml -lQtGui -lQtCore -lpthread
/home/user/downloads/NCReport2/lib/libncreport.so: undefined reference to `QGraphicsScene::eventFilter(QObject*, QEvent*)'
collect2: выполнение ld завершилось с кодом возврата 1
make: *** [bin/tabl] Ошибка 1

при этом упоминания QGraphicsScene в тексте программы нет. Как заставить NCReport работать?
И еще: в примерах все время идут ссылки на папку "runner", я уже штук 5 разных NCReport'ов повыкачал, ни в одном этой папки нет. Это мне не везет, или так задумано?

 
175  Qt / Базы данных / Re: MySQL, QT3, кириллица. Перепробовал все : Октябрь 20, 2008, 13:33
УРА!!
Я, похоже, перемудрил. Изменил по совету crossly свой main.cpp (приведу полный текст-вдруг кому пригодится?)
#include <qapplication.h>
#include <qtextcodec.h>
#include "baseform.h"

int main( int argc, char ** argv )
{
    QApplication a( argc, argv );
    QTextCodec *codec;
    codec=QTextCodec::codecForName("utf8");
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForTr(codec);
    baseForm w;
    w.show();
    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
    return a.exec();
}
И все! Не нужно править my.cnf, не нужны дополнительные запросы-все сразу заработало, как хотелось.
Тема закрыта.
176  Qt / Базы данных / MySQL, QT3, кириллица. Перепробовал все : Октябрь 20, 2008, 09:11
Исходные данные: Linux (Ubuntu 7.10), локаль utf8, KDE 3, MySQL 5.0.45, Qt 3.3.7
Создал локальную базу, в ней таблица с текстовым полем. В shell или в Query Brouser кириллица работает нормально: можно записать, можно просмотреть. Имеется программа в Qt с QDataTable, в которую выводится таблица. Вместо кириллицы-что-то типа "билет". Пытаюсь сделать запись из QLineEdit-в таблицу записываются вопросики. Пересмотрел все, что мог в инете.
пробовал:
1) менять my.cnt
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
[mysql]
default-character-set = utf8
в текст программы после подключения к базе пробовал написать запрос
QSqlQuery query1;
2)query1.exec("set character set utf8;");
или
3)query1.exec("SET NAMES utf8;");
толку никакого-только в 3 случае содержимое QLineEdit-поля после команды UPDATE отображается в таблице кракозяблами, а во 2-м случае-вопросиками. Запрос
SHOW VARIABLES LIKE '%char%';
выдает
'character_set_client', 'utf8'
'character_set_connection', 'utf8'
'character_set_database', 'latin1'
'character_set_filesystem', 'binary'
'character_set_results', 'utf8'
'character_set_server', 'latin1'
'character_set_system', 'utf8'
'character_sets_dir', '/usr/share/mysql/charsets/'
а между прочим, в , //usr/share/mysql/charsets/ нет utf8.
4)Пробовал и у таблицы, и у текстового поля менять character set-без толку, в запрос вставлять не содержимое Edit-поля, а tr(Edit->text()) - то же самое
5)если пишу не из Edit-поля, а пишу типа
"UPDATE pinigai SET nam='"+QString::fromLocal8Bit("булка")+"' WHERE id=7;"
опять вопросики.
6)если сначала выполняю запрос таким образом
query1.exec(query_str.utf8())
то по крайней мере в Query Brouser кириллица отображается правильно. А в Qt-программе все равно ее нет.
7)И еще что заметил: если после запуска программы пытаюсь редактировать имеющуюся запись и первую запись делаю латинницей, запись проходит удачно и все следующие тоже (только не по-русски). А если первую редакцию пытаюсь сделать кириллицей-не пишет, пока хоть что-нибудь не впишу латинницей. Это действует, только если изменен my.cnf (см. п. 1)
Страниц: 1 ... 10 11 [12]

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