crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Помогите с QWT
werwolf
  опции профиля:
сообщение 19.9.2009, 17:07
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 19.9.2009
Пользователь №: 1112

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте, я только начинаю программировать на QT и у меня возникло несколько вопросов: как в QT использовать QWT, допустим мне надо рисовать два графика(на одном поле), я уже сделал форму, набросал виджетов и в том числе qwtPlot, а вот как его изменить, допустим добавить легенду, или изменить граници, и потом использовать (передавать координаты и цвет линий) ума не приложу. Как сделать отдельный клас, как в примере simple_plot, в котором я могу полностью настроить qwtPlot как мне нужно, а потом просто использовать его в mainwindow?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.9.2009, 19:41
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Я немного рационализировал структуру Qwt (qwt-5.1.2). На основе файла %QWTDIR%/examples/examples.pri сделал %QWTDIR%/qwt.pri
qwt.pri
# -*- mode: sh -*- ################################################
# Qwt Widget Library
# Copyright (C) 1997   Josef Wilgen
# Copyright (C) 2002   Uwe Rathmann
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the Qwt License, Version 1.0
###################################################################

QWT_ROOT = $$PWD

include( $${QWT_ROOT}/qwtconfig.pri )

SUFFIX_STR =
VVERSION = $$[QT_VERSION]
isEmpty(VVERSION) {

    # Qt 3
    debug {
        SUFFIX_STR = $${DEBUG_SUFFIX}
    }
    else {
        SUFFIX_STR = $${RELEASE_SUFFIX}
    }
}
else {
    CONFIG(debug, debug|release) {
        SUFFIX_STR = $${DEBUG_SUFFIX}
    }
    else {
        SUFFIX_STR = $${RELEASE_SUFFIX}
    }
}


INCLUDEPATH += $${QWT_ROOT}/src
DEPENDPATH  += $${QWT_ROOT}/src


QWTLIB       = qwt$${SUFFIX_STR}

win32 {
    contains(CONFIG, QwtDll) {
        DEFINES    += QWT_DLL
        QWTLIB = $${QWTLIB}$${VER_MAJ}
    }

    win32-msvc:LIBS     += $${QWT_ROOT}/lib/$${QWTLIB}.lib
    win32-msvc.net:LIBS += $${QWT_ROOT}/lib/$${QWTLIB}.lib
    win32-msvc2002:LIBS += $${QWT_ROOT}/lib/$${QWTLIB}.lib
    win32-msvc2003:LIBS += $${QWT_ROOT}/lib/$${QWTLIB}.lib
    win32-msvc2005:LIBS += $${QWT_ROOT}/lib/$${QWTLIB}.lib
    win32-msvc2008:LIBS += $${QWT_ROOT}/lib/$${QWTLIB}.lib
    win32-g++:LIBS      += -L$${QWT_ROOT}/lib -l$${QWTLIB}
}
else {
    LIBS        += -L$${QWT_ROOT}/lib -l$${QWTLIB}
}

Далее так:
Назовём каталог с нашим проектом %APPDIR%
Структура будет такая:
%APPDIR%
+--/cpuplot
+--/src
где cpuplot - копия одноимённого каталога из примеров Qwt, туда я положил ещё один pri-файл:
cpuplot.pri
#=========== Files =================
HEADERS        += $${PWD}\src\background.h \
              $${PWD}\src\cpucurve.h \
              $${PWD}\src\cpuplot.h \
              $${PWD}\src\cpustat.h \
              $${PWD}\src\timescaledraw.h

SOURCES     += $${PWD}\src\cpuplot.cpp \
              $${PWD}\src\cpustat.cpp


#========= Dependency ==============
DEPENDPATH       +=    $${PWD}\src
INCLUDEPATH       +=    $${PWD}\src
#        --- Qt ---

#      --- External ---
include($$(LIBS)\qwt-5.1.2p1\qwt.pri)
здесь $$(LIBS) имя переменной окружения, т.е. у меня такая заведена LIBS=<путь к каталогу где лежат всякие сторонние библиотеки>
тепрь каталог src там лежат:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>


class CpuPlot;

class MainWindow : public QWidget
{
    Q_OBJECT

public:
    MainWindow(QWidget *p_parent = 0);
protected:
    CpuPlot         *win;
};

#endif //MAINWINDOW_H
mainwindow.cpp
#include <QtGui>
#include "cpuplot.h"
#include "mainwindow.h"

MainWindow::MainWindow(QWidget* p_parent) : QWidget(p_parent)
{
    win = new CpuPlot(this);
    QVBoxLayout *l = new QVBoxLayout();
    l->addWidget(win);
    setLayout(l);
    setWindowTitle(tr("Снятие осцилограммы"));
}
main.cpp
#include <QApplication>
#include <QTextCodec>
#include <QLocale>
#include <QTranslator>
#include <QDir>
#include "mainwindow.h"

int main(int argc, char *argv[])
{

  QDir            dir_plugin;    // каталог плагинов
  QString        locale;        // язык локали
  QTranslator    *qttr, *apptr;        // переводчик программы
  QStringList     list_path;    // Список путей
  
    QApplication app(argc, argv);

    // Устанавливаем кодеки
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Для функций перевода tr()

    // устанавливаем путь к плагинам (добавим каталог бинаря)
    dir_plugin = QDir(qApp->applicationDirPath()+"/plugins/");
    list_path << dir_plugin.absolutePath() << qApp->libraryPaths();
    qApp->setLibraryPaths(list_path);


    // Устанавливаем превод библиотек Qt
    locale = QLocale::system().name();    // запрос языка (например: "ru")
    qttr = new QTranslator;
    qttr->load(QString("qt_") + locale); // загрузка файла qt_*.qm
    qApp->installTranslator(qttr);         // установка переводчика    

    // Устанавливаем превод программы
    apptr = new QTranslator;
    apptr->load(QString("osciloscop_") + locale); // загрузка файла qt_*.qm
    qApp->installTranslator(apptr);         // установка переводчика    


    MainWindow mainWin;

    mainWin.resize(300, 300);
    mainWin.show();

    return app.exec();
}
src.pro
TARGET = myapp
TEMPLATE = app
DESTDIR = ..

CONFIG += debug_and_release build_all
CONFIG (debug, debug|release) {
    TARGET      = $$join(TARGET,,,.d)
    CONFIG        += console
}

#=========== Files =================
HEADERS           +=    mainwindow.h

SOURCES           +=    mainwindow.cpp

SOURCES           +=    main.cpp

#========= Dependency ==============
DEPENDPATH       +=    .
INCLUDEPATH       +=    .
include(../cpuplot/cpuplot.pri)

TRANSLATIONS   += $${DESTDIR}/osciloscop_ru.ts
CODECFORTR      = UTF-8

Примерно так, для использования Qwt без дизайнера.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 19.9.2009, 20:06
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Litkevich Yuriy, кандидат в вики, если немного по подробней описать, что где и как. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.9.2009, 20:10
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Да пожалуй, можно. Но дождусь вопросов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
werwolf
  опции профиля:
сообщение 19.9.2009, 20:39
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 19.9.2009
Пользователь №: 1112

Спасибо сказали: 0 раз(а)




Репутация:   0  


Класс, но с дизайнером никаких проблем, я пользуюсь QT Creator, а в файл проекта просто прописываю INCLUDEPATH += /usr/local/qwt-5.2.0/include/
LIBS += /usr/local/qwt-5.2.0/lib/libqwt.so.5 . Вопрос вот в чом: у меня есть список точек, находится в базе, некая статистика (к примеру по У - число, а по Х - к-во совпадений) мне нужно их построить на графику, как мне сделать цикл, в котором я n раз я буду вызывать процедуру, подавая на вход значения (int X, int Y) точек на графике, что это будет за процедура.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.9.2009, 21:01
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(werwolf @ 19.9.2009, 21:07) *
как в QT использовать QWT...

Цитата(werwolf @ 19.9.2009, 21:07) *
..в том числе qwtPlot, а вот как его изменить, допустим добавить легенду,..ума не приложу

Цитата(werwolf @ 19.9.2009, 21:07) *
Как сделать отдельный клас, как в примере simple_plot, в котором я могу полностью настроить qwtPlot..

Цитата(werwolf @ 20.9.2009, 0:39) *
как мне сделать цикл, в котором я n раз я буду вызывать процедуру, ... что это будет за процедура.

Честно говоря набор вопросов слишком обширный для одной темы, да и непонятен твой уровень знаний.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
werwolf
  опции профиля:
сообщение 19.9.2009, 21:04
Сообщение #7


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 19.9.2009
Пользователь №: 1112

Спасибо сказали: 0 раз(а)




Репутация:   0  


Я новичок, но это только в QT, ответьте, пожалуйста, на последний вопрос.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PunX
  опции профиля:
сообщение 14.5.2010, 18:10
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 12.4.2009
Из: Димитровград
Пользователь №: 676

Спасибо сказали: 0 раз(а)




Репутация:   0  


Проблема в следующем, я скачал исходники qwt-5.2.1, выполнил qmake qwt.pro, mingw32-make. компиляция прошла без ошибок но с ворнингами вида
In file included from qwt_picker.h:20,
from qwt_panner.cpp:20:
qwt_event_pattern.h:216: warning: type attributes ignored after type is already defined
qwt_event_pattern.h:217: warning: type attributes ignored after type is already defined

и так всего порядка 46 ворнингов. После окончания компиляции получаю сообщение
Запускается C:\Qt\qwt-5.2.1\examples\bin\bode.exe...
Не удалось запустить процесс!

И в папке lib лежат два файла qwt5.dll и libqwt5.a. Как проверить работу данной библиотеки?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.5.2010, 18:31
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Это ты видимо в креаторе делаешь, попробуй в командной строке. Креатор с моим приложением также себя ведёт, не понятно почему.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PunX
  опции профиля:
сообщение 14.5.2010, 18:57
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 12.4.2009
Из: Димитровград
Пользователь №: 676

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всё собралось как только запустил в командной строке.
Теперь вопрос такой, я пишу приложение в Креаторе, нужно добавить область куда будет выводится график, на какой виджет размещать график?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.12.2024, 18:53