From 83e7d90131a60206a219edf4a2ba9e570c689268 Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Fri, 13 Oct 2023 18:02:18 +0900 Subject: Replace QObject, QWidget, QImage, QPair, QRgb, QColor, QChar, QString, QIODevice with TQ* version Signed-off-by: Michele Calgaro (cherry picked from commit 241e0082f7b9ccadaeed0ef43a1c9ebb9b4fe840) --- .../docs/tdevelop/kde_app_devel/index.docbook | 44 ++++++++++----------- tde-i18n-es/docs/tdevelop/kdearch/index.docbook | 46 +++++++++++----------- 2 files changed, 45 insertions(+), 45 deletions(-) (limited to 'tde-i18n-es/docs/tdevelop') diff --git a/tde-i18n-es/docs/tdevelop/kde_app_devel/index.docbook b/tde-i18n-es/docs/tdevelop/kde_app_devel/index.docbook index f39709f31c2..6c881b6997b 100644 --- a/tde-i18n-es/docs/tdevelop/kde_app_devel/index.docbook +++ b/tde-i18n-es/docs/tdevelop/kde_app_devel/index.docbook @@ -160,15 +160,15 @@ return a.exec(); El segundo objeto de nuestro programa es el botón pulsable, una instancia de la clase QPushButton. Hemos usado el segundo de los dos constructores que se nos ofrecen para crear una instancia de este objeto. Este constructor acepta como parámetro un texto, que será la etiqueta que mostrará el botón (aquí es la cadena «¡Hola mundo!»). Luego hemos llamado al método resize() para cambiar el tamaño del botón en relación a su contenido (el botón debe ser más ancho para que la cadena aparezca completamente). -Pero, ¿qué hay del método show()? Ahora veremos que, al igual que la mayor parte de de widgetds, QPushButton se basa en la herencia simple. La documentación dice que esta clase hereda de QButton. Siga el enlace de la clase QButton y verá más widgets que han sido heredados por QPushButton (y que usaremos más adelante para explicar el mecanismo señal/slot). No obstante, el método show() no aparece listado, por lo que también tiene que haber sido proporcionado mediante herencia. La clase de la que hereda QButton es QWidget. Vuelva a seguir el enlace y verá el gran número de métodos que proporciona QWidget, incluido el método show(). Ahora entendemos lo que se ha hecho con el botón en el ejemplo: +Pero, ¿qué hay del método show()? Ahora veremos que, al igual que la mayor parte de de widgetds, QPushButton se basa en la herencia simple. La documentación dice que esta clase hereda de QButton. Siga el enlace de la clase QButton y verá más widgets que han sido heredados por QPushButton (y que usaremos más adelante para explicar el mecanismo señal/slot). No obstante, el método show() no aparece listado, por lo que también tiene que haber sido proporcionado mediante herencia. La clase de la que hereda QButton es TQWidget. Vuelva a seguir el enlace y verá el gran número de métodos que proporciona TQWidget, incluido el método show(). Ahora entendemos lo que se ha hecho con el botón en el ejemplo: Crear una instancia de QPushButton, usar el segundo constructor para establecer el texto del botón Modificar el tamaño del widget según su contenido Establecer el widget como widget principal de la instancia «a» de QApplication -Indicarle al widget que se muestre a sí mismo en la pantalla llamando a show(), un método heredado de QWidget +Indicarle al widget que se muestre a sí mismo en la pantalla llamando a show(), un método heredado de TQWidget Tras llamar al método exec() la aplicación se hace visible al usuario, mostrando una ventana con el botón, que muestra el texto «¡Hola mundo!». Tenga en cuenta que los programas gráficos se comportan de un modo algo distinto al de las aplicaciones basadas en procedimientos. El punto principal es que aquí la aplicación entra en lo que se denomina un «bucle principal de eventos». Esto significa que el programa debe esperar las acciones del usuario y luego reaccionar a ellas. Además, para una aplicación Qt, el programa tiene que estar en el bucle principal de eventos para comenzar a manejar los eventos. La siguiente sección le enseñará brevemente lo que significa esto para el programador y qué ofrece Qt para procesar los eventos del usuario. -Para los usuarios avanzados: El botón no tiene un padre declarado en el constructor, por lo que es un widget aislado de nivel superior que se ejecuta en un bucle de eventos locales que no necesita esperar al bucle de eventos principal. Consulte la documentación de la clase QWidget y la «Guía de referencia de la biblioteca KDE». +Para los usuarios avanzados: El botón no tiene un padre declarado en el constructor, por lo que es un widget aislado de nivel superior que se ejecuta en un bucle de eventos locales que no necesita esperar al bucle de eventos principal. Consulte la documentación de la clase TQWidget y la «Guía de referencia de la biblioteca KDE». @@ -183,7 +183,7 @@ return a.exec(); Ahora le daremos «vida» a la aplicación procesando los eventos del usuario. Generalmente, el usuario tiene dos formas de interactuar con un programa: el ratón y el teclado. Para ambas, una interfaz gráfica de usuario debe proporcionar métodos que detecten acciones y métodos que hagan algo como respuesta a estas acciones. -Para ello, el sistema de ventanas envía todos los eventos de interacción a la aplicación correspondiente. El objeto QApplication los envía luego a la ventana activa como objetos QEvent, y los widgets deben decidir por sí mismos qué hacer con ellos. Cuando un widget recibe el evento, procesa el método QWidget::event(QEvent*), que se encarga de decidir qué evento ha sido ejecutado y cómo reaccionar a él. Por lo tanto, event() es el manejador principal de eventos. A continuación, el método event() pasa el evento a los llamados «filtros de eventos» para determinar qué ha ocurrido y qué se debe hacer con el evento. Si no existe ningún filtro que se haga responsable para dicho evento, se llama a los manejadores de eventos especializados. Mediante ellos podemos decidir entre: +Para ello, el sistema de ventanas envía todos los eventos de interacción a la aplicación correspondiente. El objeto QApplication los envía luego a la ventana activa como objetos QEvent, y los widgets deben decidir por sí mismos qué hacer con ellos. Cuando un widget recibe el evento, procesa el método TQWidget::event(QEvent*), que se encarga de decidir qué evento ha sido ejecutado y cómo reaccionar a él. Por lo tanto, event() es el manejador principal de eventos. A continuación, el método event() pasa el evento a los llamados «filtros de eventos» para determinar qué ha ocurrido y qué se debe hacer con el evento. Si no existe ningún filtro que se haga responsable para dicho evento, se llama a los manejadores de eventos especializados. Mediante ellos podemos decidir entre: Eventos del teclado -- Teclas «Tabulador» y «Mayúsculas-Tabulador»: virtual void focusInEvent(QFocusEvent *) @@ -224,12 +224,12 @@ return a.exec(); -Note que todas las funciones de eventos son virtuales y protegidas, por lo que puede reimplementar los métodos encargados de manejar eventos que necesite en sus propios widgets y especificar cómo deben reaccionar. QWidget también contiene varios métodos virtuales más que pueden resultar de utilidad en sus programas. De ahí que sea recomendable conocer bien la clase QWidget. +Note que todas las funciones de eventos son virtuales y protegidas, por lo que puede reimplementar los métodos encargados de manejar eventos que necesite en sus propios widgets y especificar cómo deben reaccionar. TQWidget también contiene varios métodos virtuales más que pueden resultar de utilidad en sus programas. De ahí que sea recomendable conocer bien la clase TQWidget. Interacción entre objetos mediantes señales y slots Estamos llegando a una de las ventajas más obvias del juego de herramientas Qt: el mecanismo señal/objeto, que ofrece una solución útil y provechosa para la interacción de objetos (que normalmente se resuelve mediante funciones «callback» de las herramientas del sistema X-Window). Como esta comunicación requiere una programación estricta y a menudo dificulta la creación de interfaces de usuario (como se dice en la documentación de Qt y se explica en «Programando con Qt», de K. Dalheimer), Trolltech creó un nuevo sistema en el que los objetos pueden emitir señales que se pueden conectar a métodos declarados como «slots». Desde el punto de vista del programador de C++, solo es necesario saber ciertas cosas sobre este mecanismo: -la declaración de una clase que use señales y slots debe contener la macro TQ_OBJECT al principio (sin punto y coma); también debe derivar de la clase QObject +la declaración de una clase que use señales y slots debe contener la macro TQ_OBJECT al principio (sin punto y coma); también debe derivar de la clase TQObject se puede emitir una señal mediante la palabra clave «emit»; por ejemplo, «emit señal(parámetros);», desde dentro de cualquier función miembro de una clase que permita señales y slots todas las señales usadas por las clases que no sean heredadas deben ser añadidas a la declaración de la clase mediante una sección «signals» @@ -237,9 +237,9 @@ return a.exec(); el compilador de metaobjetos «moc» debe ejecutarse con el archivo de cabecera para expandir las macros y generar la implementación (que no es necesario conocer). Los archivos de salida de «moc» también son compilados por el compilador de C++. -Otra forma de usar señales sin derivar de QObject consiste en usar la clase QSignal (consulte la documentación de referencia para obtener más información y un ejemplo de uso). En lo sucesivo asumiremos que está derivando de QObject. +Otra forma de usar señales sin derivar de TQObject consiste en usar la clase QSignal (consulte la documentación de referencia para obtener más información y un ejemplo de uso). En lo sucesivo asumiremos que está derivando de TQObject. De este modo, su clase será capaz de enviar señales a cualquier otro sitio y de proporcionar «slots» a los que se puedan conectar señales. Gracias al uso de estas señales no tendrá que preocuparse de quién va a recibirlas: solo tiene que emitir la señal, y cualquier «slot» al que quiera conectarla reaccionará a la emisión. Los «slots» también pueden ser usados como métodos normales en la implementación. -Ahora, para conectar una señal a un «slot», tendrá que usar los métodos connect() proporcionados por la clase QObject o, cuando estén disponibles, otros métodos especiales proporcionados por diversos objetos para establecer la conexión con ciertas señales. +Ahora, para conectar una señal a un «slot», tendrá que usar los métodos connect() proporcionados por la clase TQObject o, cuando estén disponibles, otros métodos especiales proporcionados por diversos objetos para establecer la conexión con ciertas señales. Ejemplo de uso @@ -255,16 +255,16 @@ hello.resize( 100, 30 ); a.setMainWidget( &hello ); -QObject::connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); +TQObject::connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); hello.show(); return a.exec(); } -Como puede comprobar, la única adición para dar más interacción al botón consiste en usar un método connect(): connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); es todo cuanto tiene que añadir. ¿Cuál es su significado? La declaración de la clase QObject dice lo siguiente sobre el método connect(): -bool connect ( const QObject * emisor, const char * señal, const QObject * receptor, const char * miembro ) -Esto significa que debe especificar como primer parámetro un puntero de una instancia de la clase QObject, que es el emisor de la señal (lo que significa que puede emitir esta señal); a continuación debe especificar la señal que desea conectar. Los dos últimos parámetros son, en primer lugar, el objeto receptor que proporciona un «slot», y, finalmente, la función miembro de dicho objeto que va a actuar como «slot» (y que será ejecutada tras la emisión de la señal). +Como puede comprobar, la única adición para dar más interacción al botón consiste en usar un método connect(): connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); es todo cuanto tiene que añadir. ¿Cuál es su significado? La declaración de la clase TQObject dice lo siguiente sobre el método connect(): +bool connect ( const TQObject * emisor, const char * señal, const TQObject * receptor, const char * miembro ) +Esto significa que debe especificar como primer parámetro un puntero de una instancia de la clase TQObject, que es el emisor de la señal (lo que significa que puede emitir esta señal); a continuación debe especificar la señal que desea conectar. Los dos últimos parámetros son, en primer lugar, el objeto receptor que proporciona un «slot», y, finalmente, la función miembro de dicho objeto que va a actuar como «slot» (y que será ejecutada tras la emisión de la señal). Mediante el uso de señales y «slots», los objetos de su programa pueden interactuar con otros fácilmente sin depender explícitamente del tipo de objeto receptor. Aprenderá más sobre el uso de este mecanismo para usos productivos en sucesivas secciones de este manual. También puede encontrar más información sobre el mecanismo de señales y «slots» en la Guía de referencia de la biblioteca KDE y la referencia en línea de Qt. @@ -304,7 +304,7 @@ hello.resize( 100, 30 ); a.setTopWidget( &hello ); -QObject::connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); +TQObject::connect(&hello, SIGNAL( clicked() ), &a, SLOT( quit() )); hello.show(); return a.exec(); @@ -313,7 +313,7 @@ return a.exec(); Vea que en primer lugar hemos cambiado de QApplication a TDEApplication . Además, hemos tenido que cambiar elmétodo setMainWidget() anteriormente usado por setTopWidget, que utiliza TDEApplication para establecer el «widget» principal. ¡Y ya está! Su primera aplicación de KDE ya está terminada. Ahora solo le falta indicarle al compilador la ruta de inclusión de KDE, y al enlazador que utilice la biblioteca tdecore mediante el parámetro -ltdecore. Como ahora ya sabe qué suele proporcionar como mínimo la función main(), cómo se hace visible una aplicación y cómo permite la interacción entre usuario y objetos, seguiremos con el siguiente capítulo, donde nuestra primera aplicación se construirá con &tdevelop;. Ahí tambień podrá probar todo lo que se ha dicho hasta ahora y comprobar sus efectos. -Adicionalmente, hasta ahora ha consultado la documentación de referencia de Qt, especialmente las clases QApplication, QWidget y QObject, y la documentación de la biblioteca «tdecore» sobre la clase TDEApplication. El Manual d referencia de la biblioteca KDE también contiene una completa descripción sobre cómo llamar a los constructores de QApplication y de TDEApplication, incluido el procesamiento de los argumentos pasados como parámetros en la línea de comando. +Adicionalmente, hasta ahora ha consultado la documentación de referencia de Qt, especialmente las clases QApplication, TQWidget y TQObject, y la documentación de la biblioteca «tdecore» sobre la clase TDEApplication. El Manual d referencia de la biblioteca KDE también contiene una completa descripción sobre cómo llamar a los constructores de QApplication y de TDEApplication, incluido el procesamiento de los argumentos pasados como parámetros en la línea de comando. @@ -549,10 +549,10 @@ return a.exec(); 16 statusBar()->show(); 17 18 // permitir que la vista pueda cambiar la barra de estado y el título -19 connect(m_view, SIGNAL(signalChangeStatusbar(const QString&)), -20 this, SLOT(changeStatusbar(const QString&))); -21 connect(m_view, SIGNAL(signalChangeCaption(const QString&)), -22 this, SLOT(changeCaption(const QString&))); +19 connect(m_view, SIGNAL(signalChangeStatusbar(const TQString&)), +20 this, SLOT(changeStatusbar(const TQString&))); +21 connect(m_view, SIGNAL(signalChangeCaption(const TQString&)), +22 this, SLOT(changeCaption(const TQString&))); 23 24 } @@ -584,7 +584,7 @@ return a.exec(); Tampoco es necesario decir que la estabilidad es uno de los principales objetivos del diseño. Nadie puede evitar los errores, pero se puede conseguir bastante mediante objetivos diseñados inteligentemente y el amplio uso de diseños orientados a objetos. C++ hace que la programación sea un juego si sabe cómo explotar sus capacidades: herencia, ocultación de información y reusabilidad del código existente. -Cuando cree un proyecto KDE o Qt, siempre tendrá una vista que herede de QWidget, ya sea por herencia directa o porque el widget de la biblioteca que desea usar hereda de QWidget. De ahí que el asistente para aplicaciones haya construido una vista que es una instancia de una clase «aplicaciónView», que hereda de QWidget. +Cuando cree un proyecto KDE o Qt, siempre tendrá una vista que herede de TQWidget, ya sea por herencia directa o porque el widget de la biblioteca que desea usar hereda de TQWidget. De ahí que el asistente para aplicaciones haya construido una vista que es una instancia de una clase «aplicaciónView», que hereda de TQWidget. Este capítulo describe cómo usar widgets de bibliotecas para crear vistas para aplicaciones de KDE o Qt que han sido generadas con &tdevelop;. Luego veremos las bibliotecas y qué tipo de vistas nos ofrecen. @@ -601,7 +601,7 @@ return a.exec(); Si observa la primera página de la documentación en línea de Qt encontrará un enlace a «capturas de pantalla de los widgets», donde podrá ver cómo son los widgets que contiene Qt. Estos widgets están listos para usar y pueden ser combinados entre sí para formar widgets más complicados que le permitirán crear vistas y diálogos para su aplicación. A continuación describiremos algunos de estos widgets que le resultarán de utilidad para crear vistas de aplicaciones, pero recuerde que las bibliotecas de KDE suelen contener otros widgets para el mismo propósito. Veremos esto en la próxima sección. A continuación le damos una lista de pistas sobre para qué propósito puede usar cada componente de Qt: Si el área de su vista no es lo suficientemente amplia para mostrar todos sus datos, el usuario debería poder desplazarse por el documento con barras situadas a la derecha y en la parte inferior de la vista. Para ello, Qt proporciona la clase QScrollView, que ofrece un área hija que se puede desplazar. Como se ha explicado, puede derivar su propio widget de la clase QScrollView o usar una instancia de ella para gestionar el widget que contendrá la vista de su documento. -Para crear una vista propia que se pueda deslazar, derive su widget de vista de la clase QWidget y añada un QScrollBar horizontal y otro vertical (esto es lo que hace, por ejemplo, el widget TDEHTMLView de KDE). +Para crear una vista propia que se pueda deslazar, derive su widget de vista de la clase TQWidget y añada un QScrollBar horizontal y otro vertical (esto es lo que hace, por ejemplo, el widget TDEHTMLView de KDE). Para procesar texto, utilice QTextEdit. Esta clase proporciona un widget con un completo editor de texto que es capaz de cortar, copiar y pegar texto, y está gestionado por una vista que se puede desplazar. Use QTable para mostrar datos organizados en forma de tabla. Como QTable también está dotada de barras de desplazamiento, ofrece una buena solución para aplicaciones de cálculo de tablas. Para mostrar dos widgets diferentes o dos instancias del mismo widget a la vez, utilice QSplitter. Esta clase le permite distribuir las vistas mediante divisores horizontales o verticales. KMail es un buen ejemplo de la apariencia de esta clase (la vista principal está dividida verticalmente por un «splitter» o divisor, y la ventana de la derecha también está dividida horizontalmente). @@ -653,7 +653,7 @@ return a.exec(); Configuración de los accesos rápidos de teclado Los accesos rápidos de teclado son algo muy profesional que siempre debería añadir a sus aplicaciones. Son usados principalmente por usuarios avanzados que desean trabajar más rápido con sus aplicaciones. Para implementarlos, las bibliotecas de KDE ofrecen la clase TDEAction, que proporciona las teclas de acceso rápido y también brinda acceso a los aceleradores de teclado estándares configurados globalmente. De forma predeterminada, las aplicaciones generadas con &tdevelop; solo utilizan accesos rápidos de teclado estándares, como «F1» para acceder a la ayuda en línea, «Ctrl+N» para «Nuevo archivo», etc. -Si su aplicación contiene gran número de aceleradores, debería hacer que se pudieran configurar desde el menú de «Opciones», ya sea combinados con la configuración de otras aplicaciones en un QWidget o bien de modo aislado. La biblioteca de KDE proporciona una clase KKeyChooser para usar en diálogos que contienen pestañas, para los que KKeyDialog proporciona un diálogo de configuración de teclas listo para usar. +Si su aplicación contiene gran número de aceleradores, debería hacer que se pudieran configurar desde el menú de «Opciones», ya sea combinados con la configuración de otras aplicaciones en un TQWidget o bien de modo aislado. La biblioteca de KDE proporciona una clase KKeyChooser para usar en diálogos que contienen pestañas, para los que KKeyDialog proporciona un diálogo de configuración de teclas listo para usar. @@ -696,7 +696,7 @@ return a.exec(); El botón <guibutton>¿Qué es esto?</guibutton> El botón ¿Qué es esto? proporciona ventanas de ayuda con la idea de que el usuario necesita ayuda sobre cierto widget de la vista activa o de un elemento de una barra de herramientas. Se suele colocar en la misma barra de herramientas y se activa cuando el usuario pulsa su botón. El cursor cambia a una flecha con un signo de interrogación (con el mismo aspecto que muestra el botón). A partir de ese momento, el usuario puede pulsar sobre cualquier widget visible y obtener una ventana de ayuda. Como ejercicio, pruebe el comportamiento del botón ¿Qué es esto? de &tdevelop;. -Para añadir ayudas «¿Qué es esto?» a cualquiera de sus widgets, utilice el método estático QWhatsThis::add(QWidget *widget, const QString &texto) +Para añadir ayudas «¿Qué es esto?» a cualquiera de sus widgets, utilice el método estático QWhatsThis::add(TQWidget *widget, const TQString &texto) diff --git a/tde-i18n-es/docs/tdevelop/kdearch/index.docbook b/tde-i18n-es/docs/tdevelop/kdearch/index.docbook index 6166b21acea..2fe426c1f14 100644 --- a/tde-i18n-es/docs/tdevelop/kdearch/index.docbook +++ b/tde-i18n-es/docs/tdevelop/kdearch/index.docbook @@ -238,7 +238,7 @@ <ulink url="kdeapi:tdeui/KPixmapIO">KPixmapIO</ulink> -Conversión rápida de QImage a QPixmap. +Conversión rápida de TQImage a QPixmap. @@ -473,7 +473,7 @@ url="kdeapi:tdeui/KAnimWidget">KAnimWidget El model de gráficos de bajo nivel de Qt se basa en las capacidades proporcionadas por X11 y otros sitemas de ventanas para los que existen versiones de Qt. Pero también extiende las opciones mencionadas implementando características adicionales como transformaciones de tamaño arbitrario para textos y mapas de pixels. -La clase central para la realización de gráficos 2D en Qt es QPainter. Puede dibujar en un QPaintDevice. Hay implementados tres dispositivos de pintura posibles: uno es QWidget, que representa un widget de la pantalla. El segundo es QPrinter que representa una impresora y produce salida PostScript. El tercero es la clase QPicture, que almacena comandos de dibujo y puede guardarlos en el disco para reproducirlos posteriormente. Un formato de almacenamiento posible para los comandos de dibujo es el estándar de W3C denominado SVG. +La clase central para la realización de gráficos 2D en Qt es QPainter. Puede dibujar en un QPaintDevice. Hay implementados tres dispositivos de pintura posibles: uno es TQWidget, que representa un widget de la pantalla. El segundo es QPrinter que representa una impresora y produce salida PostScript. El tercero es la clase QPicture, que almacena comandos de dibujo y puede guardarlos en el disco para reproducirlos posteriormente. Un formato de almacenamiento posible para los comandos de dibujo es el estándar de W3C denominado SVG. Por lo tanto, es posible reutilizar el código de procesado que se utiliza para mostrar un widget en su impresión posterior, con las mismas características soportadas. Obviamente, en la práctica, el código se utiliza en un contexto ligeramente distinto. El dibujo en un widget se realiza casi exclusivamente en el método paintEvent() de la clase del widget. @@ -664,10 +664,10 @@ url="kdeapi:tdeui/KAnimWidget">KAnimWidget QBrush::QBrush(BrushStyle) - Crea una brocha negra con uno de los siguientes patrones mostrados a continuación. -QBrush::QBrush(const QColor &, BrushStyle) - Crea una brocha de color con uno de los patrones mostrados a continuación. +QBrush::QBrush(const TQColor &, BrushStyle) - Crea una brocha de color con uno de los patrones mostrados a continuación. -QBrush::QBrush(const QColor &, const QPixmap) - Crea una brocha de color con el patrón personalizado que se proporcione como segundo parámetro. +QBrush::QBrush(const TQColor &, const QPixmap) - Crea una brocha de color con el patrón personalizado que se proporcione como segundo parámetro. @@ -685,7 +685,7 @@ url="kdeapi:tdeui/KAnimWidget">KAnimWidget Color -Los colores juegan un papel tanto al ajustar curvas como al rellenar figuras. En Qt, los colores están representados por la clase QColor. Qt no soporta características gráficas avanzadas como perfiles de color ICC y corrección de color. Los colores se construyen normalmente especificando sus componentes rojo, verde y azul, siguiendo el modelo RGB que utilizan los monitores para dibujar los pixels. +Los colores juegan un papel tanto al ajustar curvas como al rellenar figuras. En Qt, los colores están representados por la clase TQColor. Qt no soporta características gráficas avanzadas como perfiles de color ICC y corrección de color. Los colores se construyen normalmente especificando sus componentes rojo, verde y azul, siguiendo el modelo RGB que utilizan los monitores para dibujar los pixels. También es posible utilizar tono, saturación y valor. Esta representación (HSV) es la que se utiliza en el diálogo de color de Gtk, por ejemplo en GIMP. En este caso, el tono corresponde al ángulo en la rueda de color, mientras que la saturación corresponde a la distancia desde el centro de círuclo. El valor se puede elegir con un selector independiente. @@ -738,7 +738,7 @@ url="kdeapi:tdeui/KAnimWidget">KAnimWidget QPixmap corresponde directamente a los objetos de mapas de pixels de X11. Los mapas de pixels son objetos del lado del servidor y pueden (en la mayoría de las tarjetas gráficas modernas) ser almacenadas directamente en la memoria de la tarjeta. Esto hace que sean muy eficientes para tranferir mapas de pixels a la pantalla. Los mapas de pixels también funcionan como los equivales de fuera de la pantalla de los widgets; la clase QPixmap es una subclase de QPaintDevice, por lo que es posible dibujarla con un QPainter. Las operaciones elementales de dibujo normalmente se ven aceleradas por los adaptadores gráficos modernos. Por lo tanto, una conducta muy habitual es la de utilizar mapas de pixels para trabajar con doble buffer. Esto significa, en vez de dibujar directamente sobre un widget, que sea crea un objeto de mapa de pixels temporal y se utiliza la función bitBlt para tranferir el mapa de pixels al widget. En casos de redibujados complejos, esto ayuda a evitar el efecto de parpadeo. -Por contra, el objeto QImage permanece en el lado del cliente. Su ventaja está en que proporciona acceso directo a los pixels de la imagen. Esto lo hace útil para la manipulación de imágenes, y operaciones como la carga y almacenamiento en disco (el método load() de QPixmap utiliza QImage en un paso intermedio). Por otro lado, dibujar una imagen en un widget es una operación con un consumo de recursos relativamente alto, ya que implica una transferencia al servidor X, lo que puede llevar algún tiempo, especialmente en imágenes grandes y servidores remotos. Dependiendo de la profundidad de color, la conversión de QImage a QPixmap puede requerir también un proceso de reducción del número de colores. +Por contra, el objeto TQImage permanece en el lado del cliente. Su ventaja está en que proporciona acceso directo a los pixels de la imagen. Esto lo hace útil para la manipulación de imágenes, y operaciones como la carga y almacenamiento en disco (el método load() de QPixmap utiliza TQImage en un paso intermedio). Por otro lado, dibujar una imagen en un widget es una operación con un consumo de recursos relativamente alto, ya que implica una transferencia al servidor X, lo que puede llevar algún tiempo, especialmente en imágenes grandes y servidores remotos. Dependiendo de la profundidad de color, la conversión de TQImage a QPixmap puede requerir también un proceso de reducción del número de colores. @@ -746,7 +746,7 @@ url="kdeapi:tdeui/KAnimWidget">KAnimWidget Dibujo de texto -Es posible dibujar texto con una de las variantes sobrecargadas del método QPainter::drawText(). De esta forma se dibuja una QString en un punto o en un rectángulo dado, utilizando la fuente establecida por QPainter::setFont(). También hay un parámetro que admite una combinación OR de algunos parámetros obtenidos de las enumeraciones Qt::AlignmentFlags y Qt::TextFlags +Es posible dibujar texto con una de las variantes sobrecargadas del método QPainter::drawText(). De esta forma se dibuja una TQString en un punto o en un rectángulo dado, utilizando la fuente establecida por QPainter::setFont(). También hay un parámetro que admite una combinación OR de algunos parámetros obtenidos de las enumeraciones Qt::AlignmentFlags y Qt::TextFlags A partir de la versión 3.0, Qt se encarga completamente de la disposición del texto incluso en los idiomas escritos de derecha a izquierda. @@ -1002,7 +1002,7 @@ rc_DATA = kviewui.rc void MainWindow::popupRequested() { - QWidget *w = factory()->container("context_popup", this); + TQWidget *w = factory()->container("context_popup", this); QPopupMenu *popup = static_cast<QPopupMenu *>(w); popup->exec(QCursor::pos()); } @@ -1138,13 +1138,13 @@ X-TDE-ServiceType=KDevelop/Part Name=KDevelop Part [PropertyDef::X-KDevelop-Scope] -Type=QString +Type=TQString [PropertyDef::X-KDevelop-ProgrammingLanguages] Type=QStringList [PropertyDef::X-KDevelop-Args] -Type=QString +Type=TQString Además de las entradas usuales, este ejemplo demuestra cómo declarar que un servicio posee algunas propiedades. Cada definición de propiedad corresponde a un grupo [PropertyDef::name] en el archivo de configuración. En este grupo, la entrada Type declara el tipo de la propiedad. Los tipos posibles son cualquier cosa que se pueda almacenar en un QVariant. @@ -1196,11 +1196,11 @@ X-KDevelop-Scope=Project Una vez que disponga de un objeto KService, solo necesita cargar la biblioteca y obtener un puntero a su objeto fábrica: KService *service = ... -QString libName = QFile::encodeName(service->library()); +TQString libName = QFile::encodeName(service->library()); KLibFactory *factory = KLibLoader::self()->factory(libName); if (!factory) { - QString name = service->name(); - QString errorMessage = KLibLoader::self()->lastErrorMessage(); + TQString name = service->name(); + TQString errorMessage = KLibLoader::self()->lastErrorMessage(); KMessageBox::error(0, i18n("There was an error loading service %1.\n" "The diagnostics from libtool is:\n%2") .arg(name).arg(errorMessage); @@ -1211,7 +1211,7 @@ if (!factory) { if (factory->inherits("KParts::Factory")) { KParts::Factory *partFactory = static_cast<KParts::Factory*>(factory); - QObject *obj = partFactory->createPart(parentWidget, widgetName, + TQObject *obj = partFactory->createPart(parentWidget, widgetName, parent, name, "KParts::ReadOnlyPart"); ... } else { @@ -1256,7 +1256,7 @@ X-TDE-StartupNotify=false DCOPClient *client = kapp->dcopClient(); client->attach(); if (!client->isApplicationRegistered("tdeio_uiserver")) { - QString error; + TQString error; if (TDEApplication::startServiceByName("tdeio_uiserver", QStringList(), &error)) cout << "El inicio de kioserver ha fallado con el mensaje " << error << endl; } @@ -1275,7 +1275,7 @@ if (!client->call("tdeio_uiserver", "UIServer", "setListMode(bool)", En el ejemplo propuesto, el servicio se inició «por nombre»; es decir, el primer argumento de TDEApplication::startServiceByName() es el nombre que aparece en la línea Name del archivo «desktop». Una alternativa consiste en usar TDEApplication::startServiceByDesktopName(), que toma el nombre del archivo «desktop» como argumento (en este caso, «tdeio_uiserver.desktop»). -Todas estas llamadas tienen una lista de URL como segundo parámetro, que se proporciona al servicio en la línea de comando. El tercer argumento es un puntero a una clase QString. Si el inicio del servicio falla, este argumento contendrá un mensaje de error traducido. +Todas estas llamadas tienen una lista de URL como segundo parámetro, que se proporciona al servicio en la línea de comando. El tercer argumento es un puntero a una clase TQString. Si el inicio del servicio falla, este argumento contendrá un mensaje de error traducido. @@ -1385,7 +1385,7 @@ else Por supuesto, incluso KMimeMagic sólo es capaz de determinar un tipo de archivo a partir del contenido de un archivo local. Para los archivos remotos existe otra posibilidad adicional: KURL url("http://developer.kde.org/favicon.ico"); -QString type = TDEIO::NetAccess::mimetype(url); +TQString type = TDEIO::NetAccess::mimetype(url); if (type == KMimeType::defaultMimeType()) cout << "No se puede encontrar el tipo" << endl; else @@ -1463,7 +1463,7 @@ KRun::run(offer.service(), urlList); Obtener un icono para una URL. Esto busca el tipo de URL y devuelve el icono asociado. KURL url("ftp://ftp.kde.org/pub/incoming/wibble.c"); -QString icon = KMimeType::iconForURL(url); +TQString icon = KMimeType::iconForURL(url); Ejecutar una URL. Esto busca el tipo de URL y ejecuta el programa preferente del usuario que está asociado a este tipo. @@ -1542,7 +1542,7 @@ void FooClass::mkdirResult(TDEIO::Job *job) Renombra un archivo. -TDEIO::symlink(const QString &target, const KURL &dest, bool overwrite, bool showProgressInfo) +TDEIO::symlink(const TQString &target, const KURL &dest, bool overwrite, bool showProgressInfo) Crea un enlace simbólico. @@ -1662,7 +1662,7 @@ TDEIO::NetAccess::copy(origen, destino); KURL url; url = ...; -QString tempFile; +TQString tempFile; if (TDEIO::NetAccess::download(url, tempFile) { // cargar el archivo de nombre tempFile TDEIO::NetAccess::removeTempFile(tempFile); @@ -1698,12 +1698,12 @@ if (TDEIO::NetAccess::download(url, tempFile) { void FooClass::transferResult(TDEIO::Job *job) { - QString mimetype; + TQString mimetype; if (job->error()) job->showErrorDialog(); else { TDEIO::TransferJob *transferJob = (TDEIO::TransferJob*) job; - QString modified = transferJob->queryMetaData("modified"); + TQString modified = transferJob->queryMetaData("modified"); cout << "Última modificación: " << modified << endl; } @@ -1848,7 +1848,7 @@ int kdemain(int argc, char **argv) copy(const KURL &url, const KURL &dest, int permissions, bool overwrite) Crea un enlace simbólico. -void symlink(const QString &target, const KURL &dest, bool overwrite) +void symlink(const TQString &target, const KURL &dest, bool overwrite) -- cgit v1.2.1