void UIButton::mouseMovementEvent(float positionX, float positionY) { float left = m_CenterPositionX - m_SelectedState->getSourceWidth() / 2.0f; float right = m_CenterPositionX + m_SelectedState->getSourceWidth() / 2.0f; float top = m_CenterPositionY - m_SelectedState->getSourceHeight() / 2.0f; float bottom = m_CenterPositionY + m_SelectedState->getSourceHeight() / 2.0f; if(positionX >= left && positionX <= right && positionY >= top && positionY <= bottom) { setIsSelected(true); if(m_Listener != NULL) { m_Listener->buttonIsSelected(this); } } else { if(m_Listener != NULL) { if(m_Listener->buttonShouldBeDeselectedOnExit(this) == true) { setIsSelected(false); } } } }
bool CircularRegion::checkAmbit(QPoint point){ bool result = false; if (distance(point, getCenterPoint()) <= SQUARE(getRadius())) { result = true; setIsSelected(); } else { clearIsSelected(); } return result; }
void Branch::setPos(QPointF sp, QPointF ep) { startPos = sp; endPos = ep; branchLine = QLineF(sp, ep); setThickness(); setIsTrunk(false); setIsSelected(false); minRect = new QPointF[4]; maxRect = new QPointF[4]; updateLengthRect(); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void PipelineFilterWidget::mouseMoveEvent(QMouseEvent* event) { if(!(event->buttons() & Qt::LeftButton)) { return; } if((event->pos() - dragStartPosition).manhattanLength() < QApplication::startDragDistance()) { return; } // The user is dragging the filter widget so we should set it as selected. setIsSelected(true); QPixmap pixmap = grab(); // Create new picture for transparent QPixmap transparent(pixmap.size()); // Do transparency transparent.fill(Qt::transparent); #if 1 QPainter p; p.begin(&transparent); p.setOpacity(0.70); p.drawPixmap(0, 0, pixmap); p.end(); #endif QByteArray itemData; QDataStream dataStream(&itemData, QIODevice::WriteOnly); dataStream << transparent << QPoint(event->pos()); QMimeData* mimeData = new QMimeData; mimeData->setData("application/x-dnditemdata", itemData); QDrag* drag = new QDrag(this); drag->setMimeData(mimeData); drag->setPixmap(transparent); drag->setHotSpot(event->pos()); emit dragStarted(this); // if(drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction) == Qt::MoveAction) // { // qDebug() << "Drag should close the widget because it was MOVE" << "\n"; // } // else // { // qDebug() << "Drag should leave Widget alone because it was COPY" << "\n"; // } drag->exec(Qt::MoveAction); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void QDataContainerReaderWidget::setupGui() { setCheckable(true); setIsSelected(false); QR3DFileCompleter* com = new QR3DFileCompleter(this, false); InputFile->setCompleter(com); QObject::connect( com, SIGNAL(activated(const QString &)), this, SLOT(on_InputFile_textChanged(const QString &))); connect(arraySelectionWidget, SIGNAL(arrayListsChanged()), this, SLOT(arraySelectionWidgetChanged())); }
bool EllipticalRegion::checkAmbit(QPoint point) { bool result = false; QPoint center = getCenterPoint(); double x = (point.x() < center.x()) ? center.x() - point.x() : point.x() - center.x(), y = (point.y() < center.y()) ? center.y() - point.y() : point.y() - center.y(); double a = getMajorAxis(), b = getMinorAxis(); if (SQUARE(x) / SQUARE(a) + SQUARE(y) / SQUARE(b) <= 1) { result = true; setIsSelected(); } else { clearIsSelected(); } return result; }
bool RectangularRegion::checkAmbit(QPoint point){ bool result = false; QPoint leftTop = getLeftTopPoint(); QPoint rightBottom = getRightBottomPoint(); if (leftTop.x() <= point.x() && point.x() <= rightBottom.x() && leftTop.y() <= point.y() && point.y() <= rightBottom.y()) { setIsSelected(); result = true; } else{ clearIsSelected(); } return result; }
bool PowerPlantTower::init() { if (!Sprite::init()) //如果忘记了这句话则会在runApplication报错 { return false; } setTowerType(5); setIsSelected(false); setGrade(0);//开始没有等级 setPower(0);//塔消耗电力 setMove(false);//开始不处于移动状态 setIsPowerEnough(true);//开始状态电力足够 setIsPowerConsumption(false);//该塔不耗电 setTowerSize(Size(3, 3));//占地面积3*3 towerSprite = Sprite::create("towerItem/Item6.png"); towerSprite->setScale(0.4); addChild(towerSprite, 5); //血量条背景图片 towerHpSprite = Sprite::create("manaBarBg.png"); towerHpSprite->setPosition(towerSprite->getPosition()+Point(0,50)); towerHpSprite->setScale(0.3); addChild(towerHpSprite, 10); //炮塔血量 hp = 4; //炮塔血量进度条 towerHp = ProgressTimer::create(Sprite::create("soldierProduceTimeBar.png")); //参数是一个图片sprite towerHp->setScaleX(2); towerHp->setScaleY(5.2); towerHp->setType(ProgressTimer::Type::BAR); towerHp->setMidpoint(Point(0, 0.5f)); towerHp->setBarChangeRate(Point(1, 0)); towerHp->setPercentage(100); towerHp->setPosition(Point(towerHpSprite->getContentSize().width / 2, towerHpSprite->getContentSize().height / 3 * 2 - 10)); towerHpSprite->addChild(towerHp, 5); //初始化不可见 towerHp->setVisible(false); towerHpSprite->setVisible(false); addTouch();//添加触摸事件 return true; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void PipelineFilterWidget::mouseReleaseEvent(QMouseEvent* event) { if(event->button() != Qt::LeftButton) { event->ignore(); return; } // Only if we are inside the delete checkbox/image then pass up to the superclass if(m_DeleteRect.contains(event->pos())) { QFrame::mouseReleaseEvent(event); } else { setIsSelected(true); event->accept(); } }
bool TouchablePoker::onTouchBegan(Touch *touch, Event *event) { Point touchPoint = touch->getLocation(); touchPoint = convertToNodeSpaceAR(touchPoint); bool b = isTouchPointInside(touchPoint); if (b) { isSelected = !isSelected; setIsSelected(isSelected); PokerRoomLayer * prl = dynamic_cast<PokerRoomLayer *>(getParent()->getParent()); if(prl) { prl->update_show_card(); } return true; } return false; }
IdentityWidget::IdentityWidget(QString name/*=QString()*/, QWidget *parent/*=0*/) : FlowLayoutItem(name, parent), ui(new Ui::IdentityWidget) { ui->setupUi(this); _haveGXSId = false; _havePGPDetail = false; m_myName = name; ui->labelName->setText(m_myName); ui->labelName->setToolTip(m_myName); QFont font = ui->labelName->font(); font.setItalic(false); ui->labelName->setFont(font); _keyId=""; ui->labelKeyId->setText(_keyId); ui->labelKeyId->setToolTip(_keyId); ui->labelKeyId->setVisible(false); ui->labelGXSId->setText(_keyId); ui->labelGXSId->setToolTip(_keyId); ui->labelGXSId->setVisible(false); ui->pbAdd->setVisible(false); QObject::connect(ui->pbAdd, SIGNAL(clicked()), this, SLOT(pbAdd_clicked())); _scene = new QGraphicsScene(this); ui->graphicsView->setScene(_scene); //To grab events ui->graphicsView->setEnabled(false); ui->graphicsView->setAlignment(Qt::AlignLeft | Qt::AlignTop); setIsCurrent(false); setIsSelected(false); setAcceptDrops(true); }
int ClearMetadataTest::doTest() { QList<QUrl> files; files << setupFilePathForTest("images-for-tests/pixmap/seagull-for-clear.jpg"); VERIFY(m_TestsApp.addFilesForTest(files), "Failed to add files"); auto artwork = m_TestsApp.getArtwork(0); const QStringList &keywords = artwork->getKeywords(); QStringList expectedKeywords = QString("picture,seagull,bird").split(','); VERIFY(expectedKeywords == keywords, "Keywords are not the same!"); VERIFY(artwork->getDescription() == "Seagull description", "Description is not the same!"); VERIFY(artwork->getTitle() == "Seagull title", "Title is not the same!"); artwork->setIsSelected(true); m_TestsApp.getFilteredArtworksModel().removeMetadataInSelected(); SignalWaiter waiter; m_TestsApp.connectWaiterForExport(waiter); m_TestsApp.selectAllArtworks(); m_TestsApp.dispatch(QMLExtensions::UICommandID::ExportMetadata); VERIFY(waiter.wait(20), "Timeout exceeded for writing metadata."); VERIFY(m_TestsApp.checkExportSucceeded(), "Failed to export"); m_TestsApp.deleteArtworks(Helpers::IndicesRanges(files.size())); VERIFY(m_TestsApp.addFilesForTest(files), "Failed to add files"); artwork = m_TestsApp.getArtwork(0); VERIFY(artwork->getBasicMetadataModel().isDescriptionEmpty(), "Description was not empty"); VERIFY(artwork->getBasicMetadataModel().isTitleEmpty(), "Title was not empty"); VERIFY(artwork->getBasicMetadataModel().areKeywordsEmpty(), "Keywords were not empty"); return 0; }
bool ForetellingTower::init() { if (!Sprite::init()) //如果忘记了这句话则会在runApplication报错 { return false; } setTowerType(6); setIsSelected(false); setGrade(0);//开始没有等级 setPower(60);//塔消耗电力 setMove(false);//开始不处于移动状态 setIsPowerEnough(true);//开始状态电力足够 setIsPowerConsumption(false);//该塔不耗电 setTowerSize(Size(3, 3));//占地面积3*3 towerSprite = Sprite::create("towerItem/Item7.png"); towerSprite->setScale(0.4); addChild(towerSprite, 5); addTouch();//添加触摸事件 return true; }
CircleWidget::CircleWidget(QString name/*=QString()*/ , QWidget *parent/*=0*/) : FlowLayoutItem(name, parent), ui(new Ui::CircleWidget) { ui->setupUi(this); m_myName = name; ui->label->setText(m_myName); ui->label->setToolTip(m_myName); _scene = new QGraphicsScene(this); _scene->addText(tr("Empty Circle")); ui->graphicsView->setScene(_scene); //To grab events ui->graphicsView->setEnabled(false); ui->graphicsView->setAlignment(Qt::AlignLeft | Qt::AlignTop); ui->graphicsView->setRenderHints( QPainter::Antialiasing | QPainter::SmoothPixmapTransform ); setIsCurrent(false); setIsSelected(false); setAcceptDrops(true); }
bool ArtilleryTower::init() { if (!Sprite::init()) //如果忘记了这句话则会在runApplication报错 { return false; } setScope(300); setAttack(2); setRate(2); setIsSelected(false); setTowerType(1); setGrade(0);//开始没有等级 setPower(0);//塔消耗电力 setMove(false);//开始不处于移动状态 setIsPowerEnough(true);//开始状态电力足够 setIsPowerConsumption(false);//该塔耗电 basePlate = Sprite::createWithSpriteFrameName("fort1.png"); //塔的基座 addChild(basePlate,2); //log("111111111111111"); rotateArtillery = Sprite::createWithSpriteFrameName("fort2.png"); //塔的弓箭 rotateArtillery->setPosition(0, 0); rotateArtillery->setRotation(270); addChild(rotateArtillery,3); //这个不能少,虽然不显示,这是因为这个炮塔比较特殊,是由2个sprite拼接而成的 towerSprite = Sprite::create("towerItem/Item2.png"); addChild(towerSprite); towerSprite->setVisible(false); gradeSprite = Sprite::create("level1.png"); gradeSprite->setScale(2); gradeSprite->setAnchorPoint(Point(0, 0)); gradeSprite->setPosition(this->getPosition().x + 60, -towerSprite->getBoundingBox().size.height / 2-10); gradeSprite->setOpacity(0);//开始让其不可见 addChild(gradeSprite, 6); //沉默图片 noAttackSprite = Sprite::create("noSpeak.png"); noAttackSprite->setScale(0.9); noAttackSprite->setAnchorPoint(Point(0.5, 0)); noAttackSprite->setPosition(towerSprite->getBoundingBox().size.width / 2 - 70, towerSprite->getBoundingBox().size.height - 60); addChild(noAttackSprite, 8); noAttackSprite->setVisible(false); //血量条背景图片 towerHpSprite = Sprite::create("manaBarBg.png"); towerHpSprite->setPosition(towerSprite->getPosition() + Point(0, 100)); towerHpSprite->setScale(0.8); addChild(towerHpSprite, 10); //炮塔血量 hp = 2; maxHp = 2; //炮塔血量进度条 towerHp = ProgressTimer::create(Sprite::create("soldierProduceTimeBar.png")); //参数是一个图片sprite towerHp->setScaleX(2); towerHp->setScaleY(5.2); towerHp->setType(ProgressTimer::Type::BAR); towerHp->setMidpoint(Point(0, 0.5f)); towerHp->setBarChangeRate(Point(1, 0)); towerHp->setPercentage(100); towerHp->setPosition(Point(towerHpSprite->getContentSize().width / 2, towerHpSprite->getContentSize().height / 3 * 2 - 10)); towerHpSprite->addChild(towerHp, 5); //初始化不可见 towerHp->setVisible(false); towerHpSprite->setVisible(false); schedule(schedule_selector(ArtilleryTower::rotateAndShoot), 0.5f); //别忘了调用函数,时间间隔越小,炮塔旋转越平滑 schedule(schedule_selector(ArtilleryTower::shoot), 2.5f); addTouch(); return true; }
bool TrainingTower::init() { if (!Sprite::init()) //如果忘记了这句话则会在runApplication报错 { return false; } instance = GameManager::getInstance(); soldierToProduceCount = 0; isTrainingSpriteSelected = false; instance->totalSoldierNum = 0; setTowerType(7); setIsSelected(false); setGrade(0);//开始没有等级 setPower(40);//塔消耗电力 setMove(false);//开始不处于移动状态 setIsPowerEnough(true);//开始状态电力足够 setIsPowerConsumption(false);//该塔不耗电 towerSprite = Sprite::create("towerItem/Item8.png"); towerSprite->setScale(0.4); addChild(towerSprite, 5); trainingSprite = Sprite::create("traingButton.png"); //训练button,开始不显示,点击该建筑才显示 trainingSprite->setScale(0.25); auto sb = ScaleBy::create(1, 1.2); auto seq = Sequence::create(sb, sb->reverse(), NULL); auto rp = RepeatForever::create(seq); trainingSprite->runAction(rp); trainingSprite->setPosition(towerSprite->getBoundingBox().size.width-10,0); addChild(trainingSprite, 5); trainingSprite->setVisible(false); produceTime = 0;//初始化生产时间为0 produceTimeBarBg = Sprite::create("manaBarBg.png"); produceTimeBarBg->setScale(0.3); //0.45 produceTimeBarBg->setPosition(towerSprite->getPosition() + Point(0, 65)); addChild(produceTimeBarBg, 11); //待生产士兵的数目 soldierNum = Label::createWithTTF("", "b.ttf", 10); soldierNum->setPosition(produceTimeBarBg->getPosition()); addChild(soldierNum, 12); //生产时间条初始化 timeBar = ProgressTimer::create(Sprite::create("time.png")); timeBar->setScaleX(0.3); timeBar->setScaleY(2.2); timeBar->setType(ProgressTimer::Type::BAR); timeBar->setMidpoint(Point(0, 0.5)); timeBar->setBarChangeRate(Point(1, 0)); timeBar->setPercentage(produceTime); timeBar->setAnchorPoint(Point(0, 0.5)); timeBar->setPosition(produceTimeBarBg->getPosition() - Point(produceTimeBarBg->getBoundingBox().size.width / 2 - 5, 0)); addChild(timeBar, 10); //生产时间属性条不可见 timeBar->setVisible(false); produceTimeBarBg->setVisible(false); soldierNum->setVisible(false); //血量条背景图片 towerHpSprite = Sprite::create("manaBarBg.png"); towerHpSprite->setPosition(towerSprite->getPosition() + Point(0, 50)); towerHpSprite->setScale(0.3); addChild(towerHpSprite, 10); //炮塔血量 hp = 4; //炮塔血量进度条 towerHp = ProgressTimer::create(Sprite::create("soldierProduceTimeBar.png")); //参数是一个图片sprite towerHp->setScaleX(2); towerHp->setScaleY(5.2); towerHp->setType(ProgressTimer::Type::BAR); towerHp->setMidpoint(Point(0, 0.5f)); towerHp->setBarChangeRate(Point(1, 0)); towerHp->setPercentage(100); towerHp->setPosition(Point(towerHpSprite->getContentSize().width / 2, towerHpSprite->getContentSize().height / 3 * 2 - 10)); towerHpSprite->addChild(towerHp, 5); //初始化不可见 towerHp->setVisible(false); towerHpSprite->setVisible(false); addTouch();//添加触摸事件 listener->onTouchBegan = [=](Touch* pTouch, Event* pEvent){ auto target = static_cast<Sprite*>(pEvent->getCurrentTarget()); Point locationInNode = target->convertTouchToNodeSpace(pTouch); Size size = target->getContentSize(); Rect rect = Rect(0, 0, size.width, size.height); //log("rect size %f %f", size.width, size.height); if (rect.containsPoint(locationInNode)) { timeBar->setVisible(true); produceTimeBarBg->setVisible(true); trainingSprite->setVisible(true); soldierNum->setVisible(true); towerHp->setVisible(true); towerHpSprite->setVisible(true); return true; } else if (!isTrainingSpriteSelected)//这样就可以实现点击其他地方隐藏属性条的功能了 { timeBar->setVisible(false); produceTimeBarBg->setVisible(false); trainingSprite->setVisible(false); soldierNum->setVisible(false); towerHp->setVisible(false); towerHpSprite->setVisible(false); } return false; }; trainingButtonListener = EventListenerTouchOneByOne::create(); trainingButtonListener->onTouchBegan = [=](Touch* pTouch, Event* pEvent){ //这个是特殊声明 用来检测训练士兵按钮的点击,这种用法就是在要点击的图片上加listener auto target = static_cast<Sprite*>(pEvent->getCurrentTarget()); Point locationInNode = target->convertTouchToNodeSpace(pTouch); Size size = target->getContentSize(); Rect rect = Rect(0, 0, size.width, size.height); //log("rect size %f %f", size.width, size.height); if (rect.containsPoint(locationInNode) && trainingSprite->isVisible() && instance->totalSoldierNum<MAX_SOLDIER_NUM ) { if (instance->getMoney() >= 100) { isTrainingSpriteSelected = true; soldierToProduceCount++; instance->totalSoldierNum++;//士兵总数最多10个 char c[10]; sprintf(c, "%d", soldierToProduceCount); std::string str = c; soldierNum->setString(str); //金钱减少 instance->setMoney(instance->getMoney() - 100); char c1[10]; sprintf(c1, "%d", instance->getMoney()); std::string str1 = c1; instance->moneyLabel->setString(str1); } else //金钱不足 { auto sb = ScaleBy::create(0.3, 1.2); auto seq = Sequence::create(sb, sb->reverse(), NULL); instance->moneyLabel->runAction(seq); } return true; } else { isTrainingSpriteSelected = false; trainingSprite->setVisible(false); } return false; }; _eventDispatcher->addEventListenerWithSceneGraphPriority(trainingButtonListener, this->trainingSprite); this->schedule(schedule_selector(TrainingTower::produceSoldier), 0.1); return true; }
Branch::Branch() { setThickness(); setIsTrunk(false); setIsSelected(false); }
bool AntiVisibleTower::init() { if (!Sprite::init()) //如果忘记了这句话则会在runApplication报错 { return false; } instance = GameManager::getInstance(); setScope(300); setAttack(0); setRate(5);//4秒钟开火一次 setTowerType(3); setIsSelected(false); setGrade(0);//开始没有等级 setPower(40);//塔消耗电力 setMove(false);//开始不处于移动状态 setIsPowerEnough(true);//开始状态电力足够 setIsPowerConsumption(true);//该塔耗电 nearestEnemy = nullptr; towerSprite = Sprite::create("towerItem/Item99.png"); addChild(towerSprite, 5); gradeSprite = Sprite::create("level1.png"); gradeSprite->setAnchorPoint(Point(0, 0)); gradeSprite->setPosition(this->getPosition().x + 10, -towerSprite->getBoundingBox().size.height / 2); gradeSprite->setOpacity(0);//开始让其不可见 addChild(gradeSprite, 6); noPowerSprite = Sprite::create("noPower.png"); noPowerSprite->setAnchorPoint(Point(0.5, 0)); noPowerSprite->setScale(1.4); noPowerSprite->setPosition(towerSprite->getBoundingBox().size.width / 2 - 70, towerSprite->getBoundingBox().size.height - 40); noPowerSprite->setVisible(false); addChild(noPowerSprite, 7); //血量条背景图片 towerHpSprite = Sprite::create("manaBarBg.png"); towerHpSprite->setPosition(noPowerSprite->getPosition()-Point(0,25)); towerHpSprite->setScale(0.8); addChild(towerHpSprite, 10); //炮塔血量 hp = 4; //炮塔血量进度条 towerHp = ProgressTimer::create(Sprite::create("soldierProduceTimeBar.png")); //参数是一个图片sprite towerHp->setScaleX(2); towerHp->setScaleY(5.2); towerHp->setType(ProgressTimer::Type::BAR); towerHp->setMidpoint(Point(0, 0.5f)); towerHp->setBarChangeRate(Point(1, 0)); towerHp->setPercentage(100); towerHp->setPosition(Point(towerHpSprite->getContentSize().width / 2, towerHpSprite->getContentSize().height / 3 * 2 - 10)); towerHpSprite->addChild(towerHp, 5); //初始化不可见 towerHp->setVisible(false); towerHpSprite->setVisible(false); schedule(schedule_selector(AntiVisibleTower::shoot), 0.1f); schedule(schedule_selector(AntiVisibleTower::checkNearestEnemy), 0.2); addTouch();//添加触摸事件 return true; }