设置QPushButton的平面与突出(遍历控件)

#include "ui_maindialog.h"
#include "maindialog.h"
#include <QState>
#include <QEventTransition>
#include <QStateMachine>
#include <qDebug>

MainDialog::MainDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MainDialog)
{
    ui->setupUi(this);
    setWindowFlags(Qt::WindowStaysOnTopHint);

    /*遍历界面上所有button*/
    QList<QPushButton *> button = this->findChildren<QPushButton *>();
    qDebug() << button.count();
    for(int i=0; i < button.count(); i++)//通过i的范围确定需要设置哪些button
    {
        setDynamicImage(button.at(i));
    }
}


void MainDialog::setDynamicImage(QPushButton *button)
{

    /*定义两种状态(鼠标进入button/退出button)*/
    QState *inside = new QState;
    inside->assignProperty(button,"flat", "false");//设置button为凸起
    QState *outside = new QState;
    outside->assignProperty(button, "flat", "true");//设置button为平面

    /*把进入、退出事件与button关联*/
    QEventTransition *enterTransition = new QEventTransition(button, QEvent::Enter);
    enterTransition->setTargetState(inside);//鼠标进入button
    outside->addTransition(enterTransition);//把outside状态,连接到enterTransition变化中去

    QEventTransition *leaveTransition = new QEventTransition(button, QEvent::Leave);
    leaveTransition->setTargetState(outside);//鼠标退出button
    inside->addTransition(leaveTransition);//把inside状态,连接到leaveTransition变化中去

    /*定义状态机*/
    QStateMachine *machine = new QStateMachine(this);

    /*在状态机中添加这两种状态*/
    machine->addState(inside);
    machine->addState(outside);

    /*设置初始状态*/
    machine->setInitialState(outside);

    /*启动状态机*/
    machine->start();
}

MainDialog::~MainDialog()
{
    delete ui;
}

http://blog.csdn.net/mingxia_sui/article/details/7760163
时间: 2024-08-01 15:25:04

设置QPushButton的平面与突出(遍历控件)的相关文章

android 遍历控件

做个笔记 androuid 遍历一个 view 下面的子view // 保存 btnSaveRout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // lineBox 下面的proBox下面所有的 addEdit String JsonString = ""; JSONArray jsonarra

iOS 遍历控件

NSArray *subviews = [_bgImageView subviews]; for (id objInput in subviews) { if ([objInput isKindOfClass:[UITextField class]]) { UITextField *theTextField = objInput; if ([objInput isFirstResponder]) { [theTextField resignFirstResponder]; } } } iOS 遍

selenium遍历控件集合

场景:需要重复增加地址栏信息,如果地址信息超过了5个就不开始增加 如图: 1.找到控件集合,在遍历每个子元素,在进行选择 1.先找到最外层的div的控件集合 2.外层的css定位为: int startSumAdress =driver.findElements(By.cssSelector("div#ship_addr_list > div.list")); 外层的地址集合列表 #集合 if(startSumAdress<5){ while (startSumAdress

jquery设置checkbox状态,设置dropdownlist选中值,隐藏某控件,给某控件追加东西

jquery设置checkbox状态 $("[ID$=chkType]").attr("checked", true); jquery设置dropdownlist选中值 $("[ID$=ddlSTATUS]").val("Not Submitted"); jquery隐藏某控件 $("[ID$=MEMO]").parent().parent().hide(); jquery给某控件追加Label $(&qu

C#遍历控件

//遍历TextBox控件 foreach (Control item in this.Controls)            {                if (item is TextBox)                {                    item.Text = "";                }            } 原文地址:https://www.cnblogs.com/HarryChis/p/10409754.html

delphi 遍历控件

有10个EDIT控件,取名为EDT1,EDT2,EDT3...EDT10,如何用一个循环知道哪个EDIT控件的值是空的?procedure   TForm1.Button2Click(Sender:   TObject);     var         I:integer;     begin         for   i:=0   to   Self.Componentcount-1   do//Self.Componentcount就是TForm1的控件数量         begin

C# 遍历控件 示例

foreach(Control c in tabControl1.TabPages)//这个循环的意思是说,遍历tabControl1中所有的TabPages,TabPages是包含在tabControl1里面的,循环进来之后,每次循环,c的类型是TabPage,而不是TabControl.代码修改为: foreach (Control c in tabControl1.TabPages) { if (c is TabPage) { foreach (Control b in c.Control

c# winform中遍历控件

foreach (Control c in this.Controls)             {                 if (c is ComboBox)                 {                     c.Enabled = false;                 }             }

遍历控件

1.平时工作中用到的 private List<T> GetChildObjects<T>(DependencyObject obj) where T : FrameworkElement        {            DependencyObject child = null;            List<T> childList = new List<T>(); for (int i = 0; i <= VisualTreeHelpe