crossplatform.ru

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

> Помогите с 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 без дизайнера.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- werwolf   Помогите с QWT   19.9.2009, 17:07
- - Litkevich Yuriy   Я немного рационализировал структуру Qwt (qwt-5.1....   19.9.2009, 19:41
- - ViGOur   Litkevich Yuriy, кандидат в вики, если немного по ...   19.9.2009, 20:06
- - Litkevich Yuriy   Да пожалуй, можно. Но дождусь вопросов.   19.9.2009, 20:10
- - werwolf   Класс, но с дизайнером никаких проблем, я пользуюс...   19.9.2009, 20:39
|- - azure   Цитата(werwolf @ 19.9.2009, 20:39) Класс,...   14.5.2010, 19:07
- - Litkevich Yuriy   Цитата(werwolf @ 19.9.2009, 21:07) как в ...   19.9.2009, 21:01
- - werwolf   Я новичок, но это только в QT, ответьте, пожалуйст...   19.9.2009, 21:04
- - PunX   Проблема в следующем, я скачал исходники qwt-5.2.1...   14.5.2010, 18:10
- - Litkevich Yuriy   Это ты видимо в креаторе делаешь, попробуй в коман...   14.5.2010, 18:31
- - PunX   Всё собралось как только запустил в командной стро...   14.5.2010, 18:57
- - Litkevich Yuriy   Цитата(PunX @ 14.5.2010, 22:57) нужно доб...   14.5.2010, 20:33
- - PunX   Нужно разместить график в области выделенной чёрны...   16.5.2010, 20:13
- - Litkevich Yuriy   ну помести туда виджет-графопостроитель (QwtPlot, ...   16.5.2010, 21:11
- - PunX   А есть ли пример как разместить этот виджет и зада...   16.5.2010, 21:14
- - Litkevich Yuriy   Цитата(PunX @ 17.5.2010, 1:14) А есть ли ...   16.5.2010, 21:31
- - PunX   размещаю с помощью Креатора, в дизайнере.   16.5.2010, 21:46
- - fsMark   Цитата(PunX @ 16.5.2010, 22:46) размещаю ...   16.5.2010, 22:23


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


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




RSS Текстовая версия Сейчас: 13.4.2024, 22:48