[Kde-devel-es] Portando aplicación que usa QStyleSheet

Joaquín Fernández Quiles joaquinf at cantv.net
Wed Nov 8 15:49:54 CET 2006


Hola, hablando de portar de KDE/Qt 3 a 4 tengo un pequeño problema.

Tengo una aplicación usando QStyleSheet donde defino algunas etiquetas para usar en el texto a
mostrar. Tengo una clase derivada de QTextBrowser con este código en el constructor, donde defino
dichas etiquetas:

//*******************************************************************************
CNavTB::CNavTB(QWidget *parent, const char *name) : QTextBrowser (parent, name) {
  QStyleSheet *ss = new QStyleSheet(this, "HojaDeEstilos");
  QStyleSheetItem *qssi = new QStyleSheetItem(ss, "bbi");
  qssi->setAnchor(TRUE);
  qssi->setColor("#996633");
  qssi->setFontWeight(QFont::Bold);
  qssi->setLogicalFontSize(4);
  qssi->setVerticalAlignment(QStyleSheetItem::VAlignSuper);

  qssi = new QStyleSheetItem(ss, "bbn");
  qssi->setAnchor(TRUE);
  qssi->setColor("#6699CC");
  qssi->setFontWeight(QFont::Bold);
  qssi->setLogicalFontSize(4);
  qssi->setVerticalAlignment(QStyleSheetItem::VAlignSuper);

  qssi = new QStyleSheetItem(ss, "num");
  qssi->setColor("#800000");
  qssi->setLogicalFontSize(3);
  qssi->setVerticalAlignment(QStyleSheetItem::VAlignSuper);

  qssi = new QStyleSheetItem(ss, "ver");
  qssi->setColor("#000000");
  qssi->setFontWeight(QFont::Normal);
  qssi->setLogicalFontSize(3);
  qssi->setDisplayMode(QStyleSheetItem::DisplayBlock);
  qssi->setSelfNesting(FALSE);
  setStyleSheet(ss);
  setPaletteBackgroundColor("#FFFFFF");
  setLinkUnderline(FALSE);
  connect(this, SIGNAL(linkClicked(const QString&)), this, SLOT(slotLinkClicked(const QString&)));
}
//*******************************************************************************


Más adelante uso esta clase para mostrar mi texto, y asigno el texto en html con mis etiquetas haciendo:


//*******************************************************************************
  ListaTB = new CNavTB(this);
  QString V = "<table width=100%>";
  CAP C = LeeC(Cap);
  for (CAP::iterator it = C.begin(); it != C.end(); it++, NumV++) {
    V += "<tr><td bgcolor=#";
    V += (NumV & 1 ? "FFFFFF>" : "F6F6F6>");
    V += "<bbi name=#" + QString::number(NumV) + "></bbi><ver><num>" + QString::number(NumV) +
"</num> " + QString::fromUtf8((*it).c_str());
    V += " <bbi href=#V" + QString::number(Cap) + "_" + QString::number(NumV - 1) +
            "-" + QString::number(NumV) + ">&#167;</bbi><bbn href=#N0_0-0>&#182;</bbn></ver></td></tr>";
  }
  V += "</table>";
  ListaTB->setTexto(V);
//*******************************************************************************

En KDE/Qt4 no existe la clase QStyleSheet ni QStyleSheetItem, he leído que se hace con algo de
QRichText.

¿Alguien tiene una idea de como portar este código?

Estuve leyendo en la documentación de Qt 4 y no aparece ningún ejemplo. También leí la documentación
acerca de QTextDocument y QTextCursor pero no tienen ejemplos para cambiar los atributos del texto,
o al menos no vi alguno que me orientara.

Tan cómodo que me parecía trabajar con las hojas de estilo :s


Saludos

Joaquín


More information about the Kde-devel-es mailing list