QT学习——控件篇

QT学习——控件篇

QPushButton的属性

 //今日领悟信号与槽:信号在发射过程中不能将函数在成员中定义,但是信号函数中的参数会自动与槽函数进行关联
    //故在槽函数中可以采用lambda(匿名函数)的参数列表进行对应的参数传递,也可以自定义另外的成员槽函数,用地址进行绑定。
     connect(ui->chcekbtn,&QPushButton::toggled,this,[=](bool bl){
     QString str=QString(bl);
     int a=5;
     QString str1=QString("(%1)有").arg(a);
     QString s = QString::number(bl);
     QMessageBox::about(this,"按钮",str);
     QMessageBox::about(this,"按钮",s);
     //%数字起站位符的作用,arg重装函数进行对应的格式化字符串。bool类型的转化为0/1。
     QMessageBox::about(this,"按钮",QString("%1").arg(bl));
       qDebug()<<bl;
   });

QPushButton与下拉菜单

 QMenu *menu=new QMenu; //实例化菜单对象
     QAction *acts[5];//定义一个对象指针数组
     acts[0]=menu->addAction("羽毛球");//调用addAction函数为下拉项的文本赋值且返回值为QAction对象,并为信号发出者
     acts[1]=menu->addAction("篮球");
     acts[2]=menu->addAction("足球");
     acts[3]=menu->addAction("排球");
      ui->P_menubtn->setMenu(menu);//关联菜单
      //用vector进行对象的存储  注:QT中为QVector,调用方式不变
      QVector<QAction*> act;
      for(int i=0;i<=3;i++)
      {
          act.push_back(acts[i]);
      }
      for(QVector<QAction*>::iterator it=act.begin();it!=act.end();++it)//迭代器
      {
          connect(*it,&QAction::triggered,this,[=](){//connect信号链接的第一个参数必须为指针类型
             qDebug()<<"我爱运动!!";
          });
      }
      //用for循环进行信号与槽的匹配
     for(int i=0;i<=3;i++)
     {
         connect(acts[i],&QAction::triggered,this,[=](){
            QMessageBox::about(this,"菜单项","我最喜欢的运动是"+QString("“%1”").arg(acts[i]->text()));//用text()函数将文本信息输出
         });
     }


QToolButton的样式设置

 QAction *actbtn=new QAction(QIcon(":/res/plane1.png"),"你喜欢什么?");
     ui->toolbtn->setDefaultAction(actbtn);//用setDefaultAction方式将QAction对象与toolbtn进行绑定

     connect(ui->toolbtn,&QToolButton::triggered,this,[=](QAction *mct){//取与toolbtn绑定的QAction对象
         mct->setIcon(QIcon(":/res/plane2.png"));
         mct->setText("我爱你中国!!!");
         ui->toolbtn->setIconSize(QSize(50,50));
     });
     ui->toolbtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//枚举值,此枚举是在图标的后面显示文字

QToolButton设置图标的三种方式:

方式1.直接用ui->toolbtn调用setIcon();

方式2.用QAction类实例化对象,调用构造函数初始化,调用setDefaultAction()进行设置。

方式3.调用setArrowType()函数进行带箭头的图标设置。

QToolButton类型菜单弹出的三种枚举方式

/*
弹出菜单的弹出模式是一个枚举类型: QToolButton::ToolButtonPopupMode, 取值如下
	- QToolButton::DelayedPopup: 延时弹出, 按压工具按钮一段时间后才能弹出, 比如:浏览器的返回按钮
								 长按按钮菜单弹出, 但是按钮的 clicked 信号不会被发射
	- QToolButton::MenuButtonPopup: 在这种模式下,工具按钮会显示一个特殊的箭头,表示有菜单。
									当按下按钮的箭头部分时,将显示菜单。按下按钮部分发射 clicked 信号
	- QToolButton::InstantPopup: 当按下工具按钮时,菜单立即显示出来。
								 在这种模式下,按钮本身的动作不会被触发(不会发射clicked信号
*/

// 设置弹出菜单的弹出方式
void setPopupMode(QToolButton::ToolButtonPopupMode mode);
// 获取弹出菜单的弹出方式
QToolButton::ToolButtonPopupMode popupMode() const;

/*

QRadioButton——单选按钮

ui->radioButton_1->setChecked(true);//为单选按钮设置默认选项

放在不同的容器中来区分不同的组,每组只能选择一个。

QCheckBox——复选框按钮

 //将根复选框的与子框进行调控
     connect(ui->computer,&QCheckBox::clicked,this,[=](bool bl){
         if(bl==true)
         {
             ui->c_btn->setChecked(true);
             ui->PHP_btn->setChecked(true);
             ui->java_btn->setChecked(true);
         }
         else
         {
             ui->c_btn->setChecked(false);
             ui->PHP_btn->setChecked(false);
             ui->java_btn->setChecked(false);
         }

     });
    ui->computer->setTristate(true);//将复选框的三态属性设置为true(缺省值即为true)
    connect(ui->PHP_btn,&QCheckBox::stateChanged,this,&Mywidget::changed);//将每一个按钮的的信号添加相同的槽,执行相同的操作
    connect(ui->c_btn,&QCheckBox::stateChanged,this,&Mywidget::changed);
    connect(ui->java_btn,&QCheckBox::stateChanged,this,&Mywidget::changed);

槽函数:

void Mywidget::changed(int cha)
{
    if(cha==Qt::Checked)
    {
        b_number++;//用计数器的方式来进行判断
    }
    else {
        b_number--;
    }
    if(b_number==3)
    {
        ui->computer->setCheckState(Qt::Checked);//三种枚举值,全选
    }
    else if(b_number==0)
    {
         ui->computer->setCheckState(Qt::Unchecked);//全不选
    }

    else {
         ui->computer->setCheckState(Qt::PartiallyChecked);//半选
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值