Si queremos usar la funcionalidad de Windows de mover una ventana a la izquierda o derecha presionando Win + Left / Right
Debemos entrar en Shortcuts -> Global Shortcuts -> KWin y escribir "Tile" en la barra de busqueda
Mostrando entradas con la etiqueta mover. Mostrar todas las entradas
Mostrando entradas con la etiqueta mover. Mostrar todas las entradas
domingo, 25 de febrero de 2018
miércoles, 17 de diciembre de 2014
Mover objetos con transiciones en Qt con QPropertyAnimation
Aqui explicaremos como mover un objeto de Qt de un lugar a otro de la pantalla y que este se valla deslizando:
Basta con crear una animación de movimiento con QPropertyAnimation.
// Se crea la animación
// el parámetro OBJETO es el objeto que queremos mover
// Puede ser un QLabel, QGraphicsWidget, etc
QPropertyAnimation *animation = new QPropertyAnimation(OBJETO, "pos");
// Duración de la animación. El tiempo desde que sale hasta que llega
animation->setDuration(1000);
// Posición inicial de donde va a partir
animation->setStartValue(QPointF(this->x(), this->y()));
// Posición final a donde va a llegar// En este caso le estoy diciendo que se mantenga en el mismo// valor de x pero que varie el valor de Y en 100 px
animation->setEndValue(QPointF(this->x(), this->y()+100));
// Inicia la animación
animation->start(QAbstractAnimation::DeleteWhenStopped);
Este es un ejemplo compilable:
#include <QtCore> #include <QtWidgets> #include <QObject> #include <QCoreApplication> /** @brief Representa una figura cuadrada **/ class Cuadrado : public QGraphicsWidget { public: /** Constructor * @param colorDeseado Color que el usuario desea * Puede ser "azul" o "rojo". En caso contrario * la pieza se dibujará gris **/ Cuadrado(QString colorDeseado):QGraphicsWidget(){ // Asigna el color segun el color deseado color= colorDeseado=="rojo"? Qt::red : (colorDeseado=="azul"?Qt::blue : Qt::gray); } ~Cuadrado(){} /** Pinta la pieza segun el color **/ void paint(QPainter *painter, const QStyleOptionGraphicsItem *,QWidget *){ painter->fillRect(rect(), color); } void mover(qreal xEnd,qreal yEnd){ // Aqui crea la animación QPropertyAnimation *animation = new QPropertyAnimation(this,"pos"); animation->setDuration(8000); // 8 Segundos animation->setStartValue(QPointF(this->x(), this->y())); animation->setEndValue(QPointF(xEnd, yEnd)); animation->start(QAbstractAnimation::DeleteWhenStopped); } private: /** Color del cuadrado **/ Qt::GlobalColor color; }; int main(int argc, char **argv) { QApplication app(argc, argv); // Creamos un cuadro rojo y uno azul Cuadrado *cuadroAzul=new Cuadrado("azul"); Cuadrado *cuadroRojo=new Cuadrado("rojo"); // Los movemos a la posición inicial cuadroAzul->moveBy(60,10); cuadroRojo->moveBy(10,10); // Se crea la escena QGraphicsScene scene(0, 0,600, 600); // Se agrega los cuadros a la escena scene.addItem(cuadroAzul); scene.addItem(cuadroRojo); // Se mueve con animación cuadroAzul->mover(200,500); cuadroRojo->mover(100,500); QGraphicsView window(&scene); window.show(); return app.exec(); }
Etiquetas:
animacion,
animar,
animation,
curva,
ejemplo QPropertyAnimation,
linea,
mover,
object,
QGraphicsWidget,
QLabel,
QPropertyAnimation,
qt
domingo, 7 de abril de 2013
Usar el mouse con C/C++ en linux
La forma más fácil para usar las funcionalidades del mouse es usando xdotool (necesita tenerlo instalado).
Ejemplo 2:
Ejemplo 1:
Mover el cursor a la coordenada 1,1
system("xdotool mousemove 1 1");
Ejemplo 2:
Este es otro ejemplo de una clase "Mouse" que hice para probar
#include <inttypes.h> #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> using namespace std; #define SIZE_OF_SCRIPT_CLICK 20 // Size script that will run the click class Mouse{ public: /** Mouse buttons **/ enum MouseButton{ Left=1, Middle=2, Right=3 }; /** Perform click's * * @param nClicks Number of clicks to perform * @param button Button of the click * @param delay Delay time in microseconds * */ void click(int nClicks=1, MouseButton button=Left,int delay=0){ static char script[SIZE_OF_SCRIPT_CLICK]; memset(script,0,sizeof(char)*SIZE_OF_SCRIPT_CLICK); sprintf (script,"xdotool click %d",int(button)); while (nClicks--){ system(script); if (nClicks) usleep(delay); } } /** Type of mouse move **/ enum TypeOfMove{ Relative, // Move the cursor with respect to the current position Absolute // Places the cursor at a given position }; /** Change the cursor position * * @param x Abscissa * @param y Ordinate * @param typeOfMove Type of move */ void move(int x,int y,TypeOfMove typeOfMove=Absolute){ static char script[SIZE_OF_SCRIPT_CLICK]; memset(script,0,sizeof(char)*SIZE_OF_SCRIPT_CLICK); sprintf (script,"xdotool mousemove%s %d %d", typeOfMove==Relative?"_relative":"",x,y); system(script); } }; int main() { Mouse m; usleep(500000); m.click(1,Mouse::Right); usleep(500000); m.move(0,200,Mouse::Relative); m.click(1,Mouse::Left); m.move(0,200,Mouse::Absolute); m.click(1,Mouse::Left); return 0; }
Suscribirse a:
Entradas (Atom)
