C++ (Qt)main(){window win;win.setpixmap(картинка1);win.setmask(картинка1);win.show();}
C++ (Qt)main(){window win;win.setpixmap(картинка1);win.setmask(картинка1);win.show();} key_pressed(){if(Пробел) то {yes=true; rt->setpixmap(картинка2); rt->setmask(картинка2); }} painted(){if(!yes) draw(картинка1);else draw(картинка2) }
C++ (Qt)#include <qapplication.h>#include<qpixmap.h>#include <qlabel.h>#include<qmovie.h>#include <QMouseEvent>#include<qbitmap>#include <qpainter.h>#include<qtime>#include<vector>#include<list>#include<qlist>bool yes=false; class Window : public QLabel { private: QPoint m_ptPosition; protected: /* virtual void Window::mousePressEvent(QMouseEvent* pe) { m_ptPosition = pe->pos(); }*/ /* virtual void Window::mouseMoveEvent(QMouseEvent* pe) { move(pe->globalPos() - m_ptPosition); }*/ virtual void Window::mousePressEvent(QMouseEvent* pe); virtual void keyPressEvent(QKeyEvent* e); public: Window(QWidget* pwgt = 0) : QLabel(pwgt,Qt::FramelessWindowHint | Qt::Window) { } void paintEvent( QPaintEvent * );void NewPix();int who_is,who_isx,who_isy;QPixmap *p[20];QMovie *pp[20];QPixmap *ball;QPoint m[6][5];int who[6][5];int sost[6][5];QList <int> kept;QList <int>:: iterator er;QLabel lbl;int schet;}; Window *rt; void Window::NewPix(){int temp;schet=0; qint32 tx=80,ty=100; for(qint32 y=0;y<5;y++) { for(qint32 x=0;x<6;x++) {m[x][y].setX(tx); m[x][y].setY(ty); tx+=100; } tx=80; ty+=110; }QTime time;srand(time.second()); for(int i=0;i<15;i++){temp=rand()%15; kept.append(temp); kept.append(temp);} for(int y=0;y<5;y++) { for(int x=0;x<6;x++) { temp=rand()%kept.count(); who[x][y]=kept.at(temp); kept.removeAt(temp); //kept.remove(temp); //schet++; }} //if(kept.count==0) exit(0); p[0]= new QPixmap( ":img/1.PNG");p[1]= new QPixmap( ":img/2.PNG");p[2]= new QPixmap( ":img/3.PNG");p[3]= new QPixmap( ":img/4.PNG");p[4]= new QPixmap( ":img/5.PNG");p[5]= new QPixmap( ":img/6.PNG");p[6]= new QPixmap( ":img/7.PNG");p[7]= new QPixmap( ":img/8.PNG");p[8]= new QPixmap( ":img/9.PNG");p[9]= new QPixmap( ":img/10.PNG");p[10]= new QPixmap( ":img/11.PNG");p[11]= new QPixmap( ":img/12.PNG");p[12]= new QPixmap( ":img/13.PNG");p[13]= new QPixmap( ":img/14.PNG");p[14]= new QPixmap( ":img/15.PNG"); ball=new QPixmap( ":img/17.PNG"); for(int y=0;y<5;y++) for(int x=0;x<6;x++) sost[x][y]=0; who_is=-1;who_isx=-1;who_isy=-1;} void Window::mousePressEvent(QMouseEvent* pe) {//exit(0); int h=pe->x(),t=pe->y();for(qint32 y=0;y<5;y++)for(qint32 x=0;x<6;x++){ if(m[x][y].x()<h && m[x][y].x()+75>h && m[x][y].y()<t && m[x][y].y()+100>t) if(sost[x][y]!=2) { if (who_is==who[x][y]){schet+=5;sost[x][y]=2; sost[who_isx][who_isy]=2;sost[x][y]==2; who_is=-1; update();} else if(who_is==-1) {who_is=who[x][y];who_isx=x;who_isy=y;sost[x][y]=1; update();} else if(who_is!=-1 && who_is!=who[x][y]) {who_is=-1;sost[who_isx][who_isy]=0;update(); } }} } void Window::paintEvent( QPaintEvent * ){ QPainter pip; QString st=QString::number(schet); pip.begin(this); pip.setFont(QFont("Times",25,QFont::Normal)); if(!yes) {//exit(0); pip.drawPixmap(0,0,QPixmap(":img/screen6.png")); pip.drawText(800,100,st); } else {//exit(0); pip.drawPixmap(0,0,QPixmap(":img/screen2.png")); pip.drawText(800,100,st); } if(yes){for(qint32 y=0;y<5;y++)for(qint32 x=0;x<6;x++) if(sost[x][y]==0) pip.drawPixmap(m[x][y],*ball);elseif(sost[x][y]==1)pip.drawPixmap(m[x][y],*p[who[x][y]]); } pip.end();} void Window::keyPressEvent(QKeyEvent* e){ if(e->key()==Qt::Key_Return) exit(0); if(e->key()==Qt::Key_Space) {yes=true; //exit(0); // *rt->setMask(QPixmap(":img/screen2.png")); //rt->clearMask(); // rt->clear(); // rt->setPixmap(QPixmap(":img/screen2.png")); //rt->setMask(QPixmap(":img/screen2.png")); this->setPixmap(QPixmap(":img/screen2.png")); this->setMask(QPixmap(":img/screen2.png")); update(); }} // ----------------------------------------------------------------------int main(int argc, char** argv){ QApplication app(argc, argv); Window win; rt=&win; QPixmap pix(":img/screen6.png"); win.NewPix();win.setWindowTitle("My games");win.move(30,30); win.setPixmap(pix); win.setMask(pix.mask()); //win.setBaseSize(1500,1500); win.setFixedHeight(800); win.setFixedWidth(1000); win.show(); return app.exec();}
TEMPLATE = appTARGET = tst# InputHEADERS += class.hSOURCES += class.cppSOURCES += main.cpp#=========== Config ================CONFIG += debug_and_release build_allDESTDIR = ./buildOBJECTS_DIR = ./build/objUI_DIR = ./build/uicMOC_DIR = ./build/mocRCC_DIR = ./build/rccCONFIG (debug, debug|release) { OBJECTS_DIR = $$join(OBJECTS_DIR,,,d) TARGET = $$join(TARGET,,,d) CONFIG += console}
#include <QtGui>#include "class.h"int main(int argc, char** argv){ QApplication app(argc, argv);/* Вариант первый без компоновщика, размер виджета задем при создании экземпляра класса MyWidget wnd; wnd.resize(200, 200); wnd.show();*//* ========================================================= *//* Вариант второй помещаем наш виджет в родительский с помощью компоновщика, размер виджета компоновщик узнает у нашего виджета с помощью MyWidget::minimumSizeHint()*/ QWidget wnd; MyWidget *wgt; QVBoxLayout *lay; wgt = new MyWidget(&wnd); lay = new QVBoxLayout(&wnd); lay->addWidget(wgt); wnd.setLayout(lay); // размер родителя необязательно задавать, т.к. // так как у нашего виджета определена функция MyWidget::minimumSizeHint() // и она не даст компоновщику сделать его меньше. //wnd.resize(200, 200); wnd.show(); return app.exec();}
#ifndef CLASS_H#define CLASS_H#include <QLabel>class QAction;class MyWidget: public QLabel{ Q_OBJECTpublic: MyWidget(QWidget *parent = 0);private: QAction *act_kick; QSize my_size;private: QSize sizeHint(); virtual QSize minimumSizeHint () const;private slots: void slotKick(bool);};#endif //CLASS_H
#include <QtGui>#include "class.h"MyWidget::MyWidget(QWidget *parent):QLabel(parent), my_size(QSize(200, 200)){ act_kick = new QAction(this); act_kick->setShortcut(Qt::Key_Space);// задаем горячую клавишу (см. enum Qt::Key в qt.html) addAction(act_kick); connect(act_kick, SIGNAL(triggered(bool)), this, SLOT(slotKick(bool)));}/* * слот сработки действия по горячей клавише */void MyWidget::slotKick(bool checked) {qDebug() << "slotKick =" << checked; }/* * Минимальный размер нашего виджета */QSize MyWidget::minimumSizeHint () const{ // если надо то можно размер вычислять return QSize(100, 100);}/* * Желаемый размер нашего виджета */QSize MyWidget::sizeHint(){ // если надо то можно размер вычислять return my_size;}
qmakemake