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

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

Страниц: 1 ... 6 7 [8] 9 10 ... 12   Вниз
  Печать  
Автор Тема: Помогите новичку (совсем новичку)  (Прочитано 85581 раз)
Den2009
Гость
« Ответ #105 : Декабрь 22, 2009, 23:52 »

в общем, такая проблемка нарисовалась... надо в логе чтобы отображалось время запуска проги, ну и прочее...
программа начинается с заставки:
main.cpp
Код:
#include <QApplication>
#include <QTranslator>
#include <QTPlugin>
#include <QFile>
#include <QTGui>
#include <QtUiTools>

 Q_IMPORT_PLUGIN(qjpeg)
 Q_IMPORT_PLUGIN(qgif)
 Q_IMPORT_PLUGIN(qkrcodecs)

#include "proga1.h"
/* Заставка */

 void loadModules(QSplashScreen* psplash)
 {
     QTime time;
     time.start();
     for (int i = 0; i < 100; )
     {
         if (time.elapsed() > 40)
         {
             time.start();
             ++i;
         }
         psplash->showMessage("Loading: " + QString::number(i) + "%", Qt::AlignHCenter | Qt::AlignBottom, Qt::black);
     }
 }
 int main (int argc, char **argv)
 {
     QApplication app(argc, argv);
     QSplashScreen splash(QPixmap("./image/zastavka.png"));
     splash.show();
     MainWindow w;
     loadModules (&splash) ;
     getchar();
     splash.finish (&w);
     w.show();
     return app.exec();
 }
в .h объявил переменную file
Код:
#ifndef PROGA1_H
#define PROGA1_H
#include <QMainWindow>
#include <QTranslator>
#include <QFile>
#include <QObject>
#include "ui_proga1.h"

class MainWindow : public QMainWindow, Ui::MainWindow // <--------Наследуемся
{
    Q_OBJECT
public:
    ..............
    QFile* file;
    MainWindow(QMainWindow* p = 0) : QMainWindow(p)
    {

        file = new QFile(this);
как это реализовать? напишите, плз, один примерчик, а дальше я сам дойду, что и куда писать, чтоб каждое событие писалось в лог.
надо, чтоб отображались дата и время события
Записан
Den2009
Гость
« Ответ #106 : Декабрь 24, 2009, 19:17 »

с логом относительно разобрался..
есть задумка сделать справку, чтоб текст справки загружался из html файла.. нашел пример в книжке Шлее
вобщем, вот:
proga1_helpbrowser.h
Код:
#ifndef PROGA1HELPBROWSER_H
#define PROGA1HELPBROWSER_H

#include <QtGui>

class HelpBrowser : public QWidget
{
    Q_OBJECT
public:
    HelpBrowser(const QString& strPath, const QString& strFileName, QWidget* pwgt = 0) : QWidget(pwgt)
    {
        QPushButton* pcmdBack = new QPushButton ("<<");
        QPushButton* pcmdHome = new QPushButton("Home");
        QPushButton* pcmdForward = new QPushButton (">>");
        QTextBrowser* ptxtBrowser = new QTextBrowser;
        connect(pcmdBack, SIGNAL(clicked()), ptxtBrowser, SLOT(backward()));
        connect(pcmdHome, SIGNAL(clicked()), ptxtBrowser, SLOT(home()));
        connect(pcmdForward, SIGNAL(clicked()), ptxtBrowser, SLOT(forward()));
        connect(ptxtBrowser, SIGNAL(backwardAvailable(bool)), pcmdBack, SLOT(setEnabled(bool)));
        connect(ptxtBrowser, SIGNAL(forwardAvailable(bool)), pcmdForward, SLOT(setEnabled(bool)));
        ptxtBrowser->setSearchPaths(QStringList() << strPath);
        ptxtBrowser->setSource(QString(strFileName));
        //Layout setup
        QVBoxLayout* pvbxLayout = new QVBoxLayout;
        QHBoxLayout* phbxLayout = new QHBoxLayout;
        phbxLayout->addWidget(pcmdBack);
        phbxLayout->addWidget(pcmdHome);
        phbxLayout->addWidget(pcmdForward);
        pvbxLayout->addLayout(phbxLayout);
        pvbxLayout->addWidget(ptxtBrowser);
        setLayout(pvbxLayout);
    }
    HelpBrowser(QWidget *parent = 0);
    bool event(QEvent* e);
};

#endif // PROGA1HELPBROWSER_H
proga1.cpp
Код:
...........
void MainWindow::helpBrowser()
{
    this->setWindowModality(Qt::NonModal);
    HelpBrowser helpbrowser("doc", "./help/index.htm");

    helpbrowser.resize(400, 300);
    helpbrowser.show();

}
при компиляции выдает такую ошибку:
:-1: error: collect2: ld returned 1 exit status
Записан
Dendy
Гость
« Ответ #107 : Декабрь 24, 2009, 19:21 »

Это не при компиляции, это при линковке. Конец лога сюда.
Записан
Den2009
Гость
« Ответ #108 : Декабрь 24, 2009, 19:44 »

Код:
Выполняется сборка проекта Pr1...
Настройки не изменились, этап QMake пропускается.
Запускается: C:/MinGW/bin/mingw32-make.exe -w
mingw32-make: Entering directory `C:/Pr1'
C:/MinGW/bin/mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory `C:/Pr1'
g++ -c -O2 -fno-exceptions -Wall -fno-rtti -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -DQT_NO_DYNAMIC_CAST -I"..\Qt\4.6.0\include\QtUiTools" -I"..\Qt\4.6.0\include\QtCore" -I"..\Qt\4.6.0\include\QtGui" -I"..\Qt\4.6.0\include\QtXml" -I"..\Qt\4.6.0\include" -I"." -I"..\Qt\4.6.0\include\ActiveQt" -I"release" -I"." -I"..\Qt\4.6.0\mkspecs\win32-g++" -o release\main.o main.cpp
g++ -c -O2 -fno-exceptions -Wall -fno-rtti -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -DQT_NO_DYNAMIC_CAST -I"..\Qt\4.6.0\include\QtUiTools" -I"..\Qt\4.6.0\include\QtCore" -I"..\Qt\4.6.0\include\QtGui" -I"..\Qt\4.6.0\include\QtXml" -I"..\Qt\4.6.0\include" -I"." -I"..\Qt\4.6.0\include\ActiveQt" -I"release" -I"." -I"..\Qt\4.6.0\mkspecs\win32-g++" -o release\proga1.o proga1.cpp
C:/Qt/4.6.0/bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -DQT_NO_DYNAMIC_CAST -I"..\Qt\4.6.0\include\QtUiTools" -I"..\Qt\4.6.0\include\QtCore" -I"..\Qt\4.6.0\include\QtGui" -I"..\Qt\4.6.0\include\QtXml" -I"..\Qt\4.6.0\include" -I"." -I"..\Qt\4.6.0\include\ActiveQt" -I"release" -I"." -I"..\Qt\4.6.0\mkspecs\win32-g++" -D__GNUC__ -DWIN32 proga1.h -o release\moc_proga1.cpp
g++ -c -O2 -fno-exceptions -Wall -fno-rtti -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -DQT_NO_DYNAMIC_CAST -I"..\Qt\4.6.0\include\QtUiTools" -I"..\Qt\4.6.0\include\QtCore" -I"..\Qt\4.6.0\include\QtGui" -I"..\Qt\4.6.0\include\QtXml" -I"..\Qt\4.6.0\include" -I"." -I"..\Qt\4.6.0\include\ActiveQt" -I"release" -I"." -I"..\Qt\4.6.0\mkspecs\win32-g++" -o release\moc_proga1.o release\moc_proga1.cpp
C:/Qt/4.6.0/bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -DQT_NO_DYNAMIC_CAST -I"..\Qt\4.6.0\include\QtUiTools" -I"..\Qt\4.6.0\include\QtCore" -I"..\Qt\4.6.0\include\QtGui" -I"..\Qt\4.6.0\include\QtXml" -I"..\Qt\4.6.0\include" -I"." -I"..\Qt\4.6.0\include\ActiveQt" -I"release" -I"." -I"..\Qt\4.6.0\mkspecs\win32-g++" -D__GNUC__ -DWIN32 proga1_helpbrowser.h -o release\moc_proga1_helpbrowser.cpp
g++ -c -O2 -fno-exceptions -Wall -fno-rtti -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -DQT_NO_DYNAMIC_CAST -I"..\Qt\4.6.0\include\QtUiTools" -I"..\Qt\4.6.0\include\QtCore" -I"..\Qt\4.6.0\include\QtGui" -I"..\Qt\4.6.0\include\QtXml" -I"..\Qt\4.6.0\include" -I"." -I"..\Qt\4.6.0\include\ActiveQt" -I"release" -I"." -I"..\Qt\4.6.0\mkspecs\win32-g++" -o release\moc_proga1_helpbrowser.o release\moc_proga1_helpbrowser.cpp
g++ -static -static-libgcc -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-subsystem,windows -o pr1.exe object_script.pr1.Release -L"c:\Qt\4.6.0\lib" -lmingw32 -lqtmain -LC:/Qt/4.6.0/plugins/imageformats -lqjpeg -lqgif -LC:/Qt/4.6.0/plugins/codecs -lqkrcodecs -lQtUiTools -lQtXml -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
mingw32-make[1]: Leaving directory `C:/Pr1'
mingw32-make: Leaving directory `C:/Pr1'
./release\moc_proga1_helpbrowser.o:moc_proga1_helpbrowser.cpp:(.rdata$_ZTV11HelpBrowser[vtable for HelpBrowser]+0x1c): undefined reference to `HelpBrowser::event(QEvent*)'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [pr1.exe] Error 1
mingw32-make: *** [release] Error 2
Завершено с кодом возврата 2.
Ошибка во время сборки проекта Pr1
Во время выполнения сборки на этапе 'Make'
Записан
BRE
Гость
« Ответ #109 : Декабрь 24, 2009, 19:46 »

Цитировать
./release\moc_proga1_helpbrowser.o:moc_proga1_helpbrowser.cpp:(.rdata$_ZTV11HelpBrowser[vtable for HelpBrowser]+0x1c): undefined reference to `HelpBrowser::event(QEvent*)'
Внимательно посмотри что ты не определил.
Записан
Den2009
Гость
« Ответ #110 : Декабрь 24, 2009, 19:57 »

хм.. странно.. вот эти строки в заголовочном файле были лишние:
Код:
    HelpBrowser(QWidget *parent = 0);
    bool event(QEvent* e);
в примере их нет... да и я не помню, что дописывал их...
теперь компилится, но при открытии окна помощи, оно сразу же закрывается...
Записан
BRE
Гость
« Ответ #111 : Декабрь 24, 2009, 20:21 »

теперь компилится, но при открытии окна помощи, оно сразу же закрывается...
Все правильно, ведь ты создаешь объект HelpBrowser на стеке, при выходе из метода void MainWindow::helpBrowser() объект разрушается и соответственно окно закрывается.
Создавай этот объект на куче.
Код
C++ (Qt)
void MainWindow::helpBrowser()
{
   HelpBrowser *helpbrowser = new HelpBrowser("doc", "./help/index.htm");
 
   helpbrowser->resize(400, 300);
   helpbrowser->show();
}
Записан
Den2009
Гость
« Ответ #112 : Декабрь 24, 2009, 21:35 »

работает, спс...
последний (я очень на это надеюсь) вопрос:
как сделать, чтоб каждая запись в файл начиналась с новой строки и содержала дату и время?
Код:
     QFile file("./log.txt");
     if (file.open(QIODevice::WriteOnly))
     {
         QTextStream out(&file);
         out << "This is log-file" << endl();
     }
выдает такую ошибку:
Код:
C:/Pr1/../Qt/4.6.0/include/QtCore/../../src/corelib/io/qtextstream.h:320: error: too few arguments to function 'QTextStream& endl(QTextStream&)'
C:/Pr1/main.cpp:40: error: at this point in file

\n не корректно отображает в блокноте и некоторых других просмотрщиках
« Последнее редактирование: Декабрь 24, 2009, 21:36 от Den2009 » Записан
Den2009
Гость
« Ответ #113 : Декабрь 24, 2009, 21:54 »

ошибку понял.. лишними были скобки у endl
Код:
     QFile file("./log.txt");
     file.open(QIODevice::WriteOnly);
     QTextStream out(&file);
     out << "This is log-file" << endl;
     out << "This is :)" << endl;
     file.close();
работает, но пишет строки друг за другом...
и про дату с временем вопрос в силе  Улыбающийся
Записан
Den2009
Гость
« Ответ #114 : Декабрь 27, 2009, 00:46 »

блин, никто не знает, что-ли?? Непонимающий
Записан
Dendy
Гость
« Ответ #115 : Декабрь 27, 2009, 01:11 »

В нормальных редакторах текста строки тоже друг за другом? Проверьте в том же QtCreator'е.
Записан
Den2009
Гость
« Ответ #116 : Декабрь 27, 2009, 11:52 »

в нормальных - нормально ))
не нормально только в блокноте.. но у нас в вузе я не знаю, есть ли что-нить нормальное... поэтому надо как-то сделать, чтоб и в виндовском блокноте было нормально
Записан
Dendy
Гость
« Ответ #117 : Декабрь 27, 2009, 16:17 »

Тогда как-то так:

Код
C++ (Qt)
    QFile file("./log.txt");
    file.open(QIODevice::WriteOnly);
    QTextStream out(&file);
    (out << "This is log-file").endl();
    (out << "This is :)").endl();
    file.close();
 
Записан
Den2009
Гость
« Ответ #118 : Декабрь 27, 2009, 22:48 »

пишет, что class QTextStream has no member named endl
Записан
Dendy
Гость
« Ответ #119 : Декабрь 28, 2009, 00:03 »

Тогда что-то вроде:

Код
C++ (Qt)
    QFile file("./log.txt");
    file.open(QIODevice::WriteOnly);
    QTextStream out(&file);
    out << "This is log-file";
    endl(out);
    out << "This is :)";
    endl(out);
    file.close();
 
Записан
Страниц: 1 ... 6 7 [8] 9 10 ... 12   Вверх
  Печать  
 
Перейти в:  


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