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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Портирование TextEdit QT3 -> QT4. Вопросы  (Прочитано 8076 раз)
Kuzemko
Гость
« : Июль 18, 2007, 20:09 »

Нужно портировать QTextEdit. Q3TextEdit исспользовать не хочу. Возникли проблемы с zoomTo( int size ), selectedText(), sync(); setModified(false); text();

QTextStream stream(&file);
setText(stream.read());

clearParagraphBackground(int, int);

int x, y;
getCursorPosition(&x, &y);

Помогите, пожалуйста.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Июль 18, 2007, 20:31 »

textEdit->setModified(false);   ->  textEdit->document()->setModified(false);
textEdit->text();                      ->   textEdit->toPlainText() или textEdit->toHtml();
textEdit->setText()                 ->   textEdit->setPlainText() или textEdit->setHtml();
textEdit->selectedText()         ->  textEdit->textCursor().selectedText();
textEdit->sync()                      -> Уже такого нету и имхо уже не нада
getCursorPosition()                -> Смотри в сторону QCursor
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Kuzemko
Гость
« Ответ #2 : Июль 19, 2007, 10:23 »

../../4.3.0/include/QtCore/../../src/corelib/tools/qdatetime.h expected `}' before numeric constant      qucs-qt4   line 113   1184829616953   7921
../../4.3.0/include/QtCore/../../src/corelib/tools/qdatetime.h expected declaration before '}' token      qucs-qt4   line 113   1184829616953   7923
../../4.3.0/include/QtCore/../../src/corelib/tools/qdatetime.h expected identifier before numeric constant      qucs-qt4   line 113   1184829616953   7920
../../4.3.0/include/QtCore/../../src/corelib/tools/qdatetime.h expected unqualified-id before numeric constant      qucs-qt4   line 113   1184829616953   7922
../../4.3.0/include/QtCore/../../src/corelib/tools/qdatetime.h unterminated #ifndef      qucs-qt4   line 24   1184829616953   7924
Куда копать?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Июль 19, 2007, 10:27 »

Приведи код, при каких условиях возникает это? А то телепаты в отпуске Подмигивающий
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Kuzemko
Гость
« Ответ #4 : Июль 19, 2007, 20:53 »

Проект большой, а ошибка возникает судя по логу в "системном" h-файле qdatetime.h.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Июль 19, 2007, 21:04 »

Ну это понятно что оно возникает qdatetime.h. В каком месте твоей проги она возникает? Приведи все инклуды до этого ашника.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Kuzemko
Гость
« Ответ #6 : Июль 21, 2007, 20:16 »

возникает в начале файла draph.h при определении
#ifndef GRAPH_H
#define GRAPH_H
потом идет код, в конце #endif
на это компилятор говорит "unterminated #ifndef" и указывает на #ifndef GRAPH_H
Записан
Kuzemko
Гость
« Ответ #7 : Июль 24, 2007, 15:36 »

graph.h
Код:

/***************************************************************************
                                 graph.h
                                ---------
    begin                : Thu Oct 2 2003
    copyright            : (C) 2003 by Michael Margraf
    email                : michael.margraf@alumni.tu-berlin.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/
#ifndef GRAPH_H
#define GRAPH_H
#include "marker.h"
#include "../element.h"

#include <QColor>
#include <QtCore/QList>
#include <QtCore/QDate>
#include <QtCore/QTime>


// meaning of the values in a graph "Points" list
#define STROKEEND   -2
#define GRAPHARROW  -5
#define GRAPHCIRCLE -6
#define GRAPHSTAR   -7
#define BRANCHEND   -10
#define GRAPHEND    -100


class Diagram;
class ViewPainter;


struct DataX {
  DataX(const QString& Var_, double *Points_=0, int count_=0)
       : Var(Var_), Points(Points_), count(count_) {};
 ~DataX() { if(Points) delete[] Points; };
  QString Var;
  double *Points;
  int     count;
};


class Graph : public Element {
public:
  Graph(const QString& _Line="");
 ~Graph();

  void    paint(ViewPainter*, int, int);
  void    paintLines(ViewPainter*, int, int);
  QString save();
  bool    load(const QString&);
  int     getSelected(int, int);
  Graph*  sameNewOne();

  QDateTime lastLoaded;  // when it was loaded into memory
  int     yAxisNo;   // which y axis is used
  QList <DataX>  cPointsX;
  double *cPointsY;
  int    *Points, countY; // data in screen coordinates, countY = curves number
  QString Var;
  QColor  Color;
  int     Thick;
  int     Style;
  QList<Marker> Markers;

  // for tabular diagram
  int  Precision;   // number of digits to show
  int  numMode;     // real/imag or polar (deg/rad)
};

#endif

element.h
Код:

/***************************************************************************
                                 element.h
                                -----------
    begin                : Sat Sep 20 2003
    copyright            : (C) 2003 by Michael Margraf
    email                : michael.margraf@alumni.tu-berlin.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef ELEMENT_H
#define ELEMENT_H

#include <QPen>
#include <QBrush>

class Node;
class QPainter;
class WireLabel;


struct Line {
  Line(int _x1, int _y1, int _x2, int _y2, QPen _style)
       : x1(_x1), y1(_y1), x2(_x2), y2(_y2), style(_style) {};
  int   x1, y1, x2, y2;
  QPen  style;
};

struct Arc {
  Arc(int _x, int _y, int _w, int _h, int _angle, int _arclen, QPen _style)
      : x(_x), y(_y), w(_w), h(_h), angle(_angle),
arclen(_arclen), style(_style) {};
  int   x, y, w, h, angle, arclen;
  QPen  style;
};

struct Area {
  Area(int _x, int _y, int _w, int _h, QPen _Pen,
QBrush _Brush = QBrush(Qt::NoBrush))
: x(_x), y(_y), w(_w), h(_h), Pen(_Pen), Brush(_Brush) {};
  int    x, y, w, h;
  QPen   Pen;
  QBrush Brush;    // filling style/color
};

struct Port {
  Port() {};
  Port(int _x, int _y) : x(_x), y(_y) {};
  int   x, y;
  Node *Connection;
};

struct Text {
  Text(int _x, int _y, const QString& _s, QColor _Color = QColor(0,0,0),
float _Size = 10.0, float _mCos=1.0, float _mSin=0.0)
: x(_x), y(_y), s(_s), Color(_Color), Size(_Size),
 mSin(_mSin), mCos(_mCos) { over = under = false; };
  int  x, y;
  QString s;
  QColor  Color;
  float  Size, mSin, mCos; // font size and rotation coefficients
  bool  over, under;      // text attributes
};

struct Property {
  Property(const QString& _Name="", const QString& _Value="",
  bool _display=false, const QString& Desc="")
: Name(_Name), Value(_Value), display(_display), Description(Desc) {};
  QString Name, Value;
  bool    display;   // show on schematic or not ?
  QString Description;
};


// valid values for Element.Type
// The 4 least significant bits of each value are reserved for special
// additionals !!!
#define isDummy           0
#define isSpecialMask    -16

#define isComponent        0x30000
#define isComponentText    0x30002
#define isAnalogComponent  0x10000
#define isDigitalComponent 0x20000

#define isGraph            0x0020
#define isNode             0x0040
#define isMarker           0x0080
#define isWire             0x0100

#define isPainting         0x2000
#define isPaintingResize   0x2001

#define isLabel            0x4000
#define isHWireLabel       0x4020
#define isVWireLabel       0x4040
#define isNodeLabel        0x4080
#define isMovingLabel      0x4001
#define isHMovingLabel     0x4002
#define isVMovingLabel     0x4004

#define isDiagram          0x8000
#define isDiagramResize    0x8001
#define isDiagramHScroll   0x8002
#define isDiagramVScroll   0x8003



class Element {
public:
  Element();
  virtual ~Element();

  virtual void paintScheme(QPainter*);
  virtual void setCenter(int, int, bool relative=false);
  virtual void getCenter(int&, int&);

  bool isSelected;
  int  Type;    // whether it is Component, Wire, ...
  int  cx, cy, x1, y1, x2, y2;  // center and relative boundings
};


// label for Node and Wire classes
class Conductor : public Element {
public:
  WireLabel *Label;
};

#endif

marker.h
Код:

/***************************************************************************
                                marker.h
                               ----------
    begin                : Sat Apr 10 2004
    copyright            : (C) 2003 by Michael Margraf
    email                : michael.margraf@alumni.tu-berlin.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef MARKER_H
#define MARKER_H


#include "../element.h"
#include "../viewpainter.h"

#include <qpainter.h>
#include <QLinkedList>

class Diagram;
class Graph;


class Marker : public Element {
public:
  Marker(Diagram *Diag_, Graph *pg_=0, int _nn=0, int cx_=0, int cy_=0);
 ~Marker();

  void    initText(int);
  void    createText();
  void    makeInvalid();
  bool    moveLeftRight(bool);
  bool    moveUpDown(bool);
  void    paint(ViewPainter*, int, int);
  void    paintScheme(QPainter*);
  void    setCenter(int, int, bool);
  void    Bounding(int& _x1, int& _y1, int& _x2, int& _y2);
  QString save();
  bool    load(const QString& Line);
  bool    getSelected(int, int);
  Marker* sameNewOne(Graph*);
  void    getTextSize(const QFont&);

  Diagram *Diag;     // the corresponding diagram
  Graph   *pGraph;   // the corresponding graph

  int    nVarPos;      // number of values in "VarPos"
  double VarPos[256];  // values the marker is pointing to

  QString Text;     // the string to be displayed in the marker text
  bool transparent; // background shines through marker body

  int  Precision;   // number of digits to show
  int  numMode;     // real/imag or polar (deg/rad)
};

#endif
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Июль 24, 2007, 15:53 »

1) Резмещай все кутишные инклуды первыми (они должны идти первыми), затем все отсальные. Пересмотри свой проет.

Например graph.h вместо

Код:
#include "marker.h" 
#include "../element.h"

#include <QColor>
#include <QtCore/QList>
#include <QtCore/QDate>
#include <QtCore/QTime>


напиши

Код:
#include <QColor> 
#include <QtCore/QList>
#include <QtCore/QDate>
#include <QtCore/QTime>

#include "marker.h"
#include "../element.h"


Агналогично и в других ашниках. Возможно из-за этого.

2) Попробуй заменить в graph.h

Код:
#include <QtCore/QDate> 
#include <QtCore/QTime>

на

Код:
#include <QDateTime>


3) Зачем в marker.h инклуды

Код:
#include <qpainter.h> 
#include <QLinkedList>


QLinkedList не используеться вобще, для QPainter достаточно форвард-объявления
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Kuzemko
Гость
« Ответ #9 : Июль 24, 2007, 18:43 »

Спасибо, помогло
Цитировать
Резмещай все кутишные инклуды первыми

Но возникает вопрос почему это так критично?

добавлено спустя 1 час 38 минут:

 Поставил я во всем проекте кутишные инклуды первыми.
Посчитал количество #if #endif, совпадает (292 штуки).
Теперь возникет ошибка с другими файлами:
Severity and Description   Path   Resource   Location   Creation Time   Id
../../4.3.0/include/QtCore/../../src/corelib/kernel/qvariant.h expected `}' before numeric constant      qucs-qt4   line 567   1185289728093   10127
../../4.3.0/include/QtCore/../../src/corelib/kernel/qvariant.h expected declaration before '}' token      qucs-qt4   line 567   1185289728093   10129
../../4.3.0/include/QtCore/../../src/corelib/kernel/qvariant.h expected identifier before numeric constant      qucs-qt4   line 567   1185289728093   10126
../../4.3.0/include/QtCore/../../src/corelib/kernel/qvariant.h expected unqualified-id before numeric constant      qucs-qt4   line 567   1185289728093   10128
../../4.3.0/include/QtCore/../../src/corelib/kernel/qvariant.h unterminated #ifndef      qucs-qt4   line 24   1185289728093   10130
../../4.3.0/include/QtGui/../../src/gui/graphicsview/qgraphicsitem.h unterminated #ifndef      qucs-qt4   line 24   1185289728093   10131
unterminated #ifndef   qucs-qt4/qucs   item.h   line 20   1185289728093   10132
unterminated #ifndef   qucs-qt4/qucs   wire.h   line 20   1185289728093   10133
item.h
Код:

 /***************************************************************************
 * Copyright (C) 2006 by Gopala Krishna A <krishna.ggk@gmail.com>          *
 *                                                                         *
 * This is free software; you can redistribute it and/or modify            *
 * it under the terms of the GNU General Public License as published by    *
 * the Free Software Foundation; either version 2, or (at your option)     *
 * any later version.                                                      *
 *                                                                         *
 * This software is distributed in the hope that it will be useful,        *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
 * GNU General Public License for more details.                            *
 *                                                                         *
 * You should have received a copy of the GNU General Public License       *
 * along with this package; see the file COPYING.  If not, write to        *
 * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,   *
 * Boston, MA 02110-1301, USA.                                             *
 ***************************************************************************/

#ifndef __ITEM_H
#define __ITEM_H

#include <QtGui/QGraphicsItem>

class QGraphicsScene;
class QGraphicsView;
class SchematicScene;
class QucsMainWindow;
class QMenu;

class QucsItem : public QGraphicsItem
{
   public:
      enum QucsItemTypes {
         QucsItemType = (UserType << 14),
         ComponentType = (UserType << 13) | QucsItemType,
         MultiSymbolComponentType = (UserType << 12) | ComponentType,
         NodeType = (UserType << 11) | QucsItemType,
         WireType = (UserType << 10) | QucsItemType,
         PaintingType = (UserType << 9) | QucsItemType,
         DisplayType = (UserType << 8) | QucsItemType
      };

      enum {
         Type = QucsItemType
      };

      using QGraphicsItem::rotate;

      QucsItem(QGraphicsItem* parent = 0, SchematicScene* scene = 0);
      virtual ~QucsItem() {};

      int type() const;
      QRectF boundingRect() const {return QRectF(); }

      SchematicScene* schematicScene() const;
      QGraphicsView* activeView() const;
      QucsMainWindow* mainWindow() const;

      virtual QString saveString() const { return QString(""); }
      virtual bool loadFromString(QString ) { return true; }

      virtual void mirrorX();
      virtual void mirrorY();
      virtual void rotate();

      virtual void invokePropertiesDialog() {}

      QMenu* defaultContextMenu() const;
};

#endif //__ITEM_H

wire.h
Код:

/***************************************************************************
 * Copyright (C) 2006 by Gopala Krishna A <krishna.ggk@gmail.com>          *
 *                                                                         *
 * This is free software; you can redistribute it and/or modify            *
 * it under the terms of the GNU General Public License as published by    *
 * the Free Software Foundation; either version 2, or (at your option)     *
 * any later version.                                                      *
 *                                                                         *
 * This software is distributed in the hope that it will be useful,        *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
 * GNU General Public License for more details.                            *
 *                                                                         *
 * You should have received a copy of the GNU General Public License       *
 * along with this package; see the file COPYING.  If not, write to        *
 * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,   *
 * Boston, MA 02110-1301, USA.                                             *
 ***************************************************************************/

#ifndef __WIRE_H
#define __WIRE_H

#include <QtCore/QList>

#include "item.h"
#include "wireline.h"
#include "node.h"


class SchematicScene;
class QGraphicsLineItem;
class QRubberBand;

class Wire : public QucsItem
{
   public:
      enum {
         Type = QucsItem::WireType};

      Wire(SchematicScene *scene, Node *n1,Node *n2);
      ~Wire();
      void rebuild();

      inline Node* node1() const;
      inline Node* node2() const;
      inline void setNode1(Node *n1);
      inline void setNode2(Node *n2);
      void replaceNode(Node *oldNode,Node *newNode);

      QRectF boundingRect() const;
      inline int type() const;
      void paint(QPainter * p, const QStyleOptionGraphicsItem * o, QWidget * w = 0 );
      QPainterPath shape() const;
      bool contains ( const QPointF & point ) const;

      static Wire* connectedWire(const Node *n1,const Node *n2);

      void grabMoveEvent( QGraphicsSceneMouseEvent * event );
      void grabReleaseEvent ( QGraphicsSceneMouseEvent * event );
      void startMoveAndResize();
      void moveAndResizeBy(qreal dx, qreal dy);
      void stopMoveAndResize();

      void setWireLines(const QList<WireLine>& lines);
      inline QList<WireLine> wireLines() const;

      QString saveString() const;

      // Reimplemented virtuals to not to react
      void rotate() {}
      void mirrorX() {}
      void mirrorY() {}

   protected:
      QVariant itemChange(GraphicsItemChange change, const QVariant &value);
      void mousePressEvent ( QGraphicsSceneMouseEvent * event );
      void mouseMoveEvent ( QGraphicsSceneMouseEvent * event );
      void mouseDoubleClickEvent ( QGraphicsSceneMouseEvent * event );

   private:
      void createLines(const QPointF& p1, const QPointF& p2);
      void createProxyWires();
      QList<WireLine> linesBetween(const QPointF& p1, const QPointF& p2) const;
      QRect proxyRect(const WireLine& line) const;
      void updateProxyWires();
      void clearProxyWires();
      QRectF rectForLine(const WireLine& line) const;
      int indexForPos(const QPointF& pos) const;
      void deleteNullLines();

      bool m_proxyWiring;
      QList<WireLine> m_lines;
      QList<QRubberBand*> m_proxyWires;
      Node *m_node1;
      Node *m_node2;
      int m_grabbedLineIndex;
      bool m_wasGrabbed;
};

inline Node* Wire::node1() const
{
   return m_node1;
}

inline Node* Wire::node2() const
{
   return m_node2;
}

inline void Wire::setNode1(Node *n1)
{
   m_node1 = n1;
}

inline void Wire::setNode2(Node *n2)
{
   m_node2 = n2;
}

inline int Wire::type() const
{
   return Wire::Type;
}

inline QList<WireLine> Wire::wireLines() const
{
   return m_lines;
}

#endif //__WIRE_H
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #10 : Июль 24, 2007, 18:59 »

имхо, проблема таже. Смотреть нужно в туже сторону.

ЗЫ: Почитайте вот это http://hardclub.donntu.edu.ua/projects/qt/faq/tt-install.htm (последний вопрос)

ЗЫЫ: Нужно пересмотреть надобность инклудов, например

Код:
#include "item.h" 
#include "wireline.h"
#include "node.h"


возможно достаточно форвард-объявлений. Нужно стараться не загромаждать инклудами *.h файлы.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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