18 按钮部件

 

QAbstractButton类是按钮部件的抽象基类,提供了按钮的通用功能。它的子类包括:

1 .标准按钮QPushButton

MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyWidget)
{
    ui->setupUi(this);

    ui->pushBtn1->setText(tr("&nihao"));   // 这样便指定了Alt+N为快捷键
    ui->pushBtn2->setText(tr("帮助(&H)"));
    ui->pushBtn2->setIcon(QIcon("../mybutton/images/help.png"));
    ui->pushBtn3->setText(tr("z&oom"));
    QMenu *menu = new QMenu(this);
    menu->addAction(QIcon("../mybutton/images/zoom-in.png"), tr("放大"));
    ui->pushBtn3->setMenu(menu);

}

void MyWidget::on_pushBtn1_toggled(bool checked)
{
    qDebug() << tr("按钮是否按下:") << checked;
}

运行结果:

on_pushBtn1_toggled函数用于检测按钮是否被按下。

代码中三个按钮改变了显示文本,在一个字母前加上“&”符号,则可以将这个按钮的加速键设置为Alt加上这个字母。如果要在文本中显示“&"符号,可以使用"&&"。

也可使用setlcon( )函数来给按钮添加图标,这里的图片文件使用了相对路径(当然也可以在设计模式通过更改icon属性来实现)。

对于pushBtn3,这里为其添加了下拉菜单,现在这个菜单什么功能也没实现。

按钮3还可以添加功能:

    QMenu *pMenu = new QMenu(this);
    pMenu->addAction(QIcon("../mybutton/images/zoom-in.png"), tr("放大"));
    pMenu->addSeparator();  //加一条隔离横线
    pMenu->addAction(QStringLiteral("缩小"));
    pMenu->addSeparator();  //加一条隔离横线
    pMenu->addAction(QStringLiteral("恢复"));

    ui->pushBtn3->setMenu(pMenu);

运行结果:

2.工具按钮QToolButton

    //菜单 搜狗拼音
    QMenu *pMenu=new QMenu(this);
    pMenu->addAction(QStringLiteral("显示语言栏"));
    pMenu->addSeparator();
    pMenu->addAction(QStringLiteral("搜狗拼音输入法"));
    pMenu->addSeparator();
    pMenu->addAction(QStringLiteral("美式键盘"));
    //设置菜单
    ui->pushButton->setMenu(pMenu);

    ui->toolButton->setMenu(pMenu);
    ui->toolButton->setText(QObject::tr("搜狗拼音"));
    ui->toolButton->setPopupMode(QToolButton::DelayedPopup);  //当前是延时,还可以不延时用 InstantPopup
    ui->toolButton->setArrowType(Qt::RightArrow);
    //设置按钮和文本的位置
    ui->toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

运行结果:

QToolButtonQPushButton的区别是TOOL更适合用来设置菜单按钮。

如:setPopupMode可以设置是长按显示菜单,还是按下后立即显示菜单。

如:setArrowType可以设置箭头的方向

Constant	Value
Qt::NoArrow	0
Qt::UpArrow	1
Qt::DownArrow	2
Qt::LeftArrow	3
Qt::RightArrow	4

3.复选框QCheckBox

   //设置复选框的字体和状态
   ui->checkBox->setText(QObject::tr("未选中"));
   ui->checkBox->setCheckState(Qt::Unchecked);
   connect(ui->checkBox,SIGNAL(stateChanged(int)),this,SLOT(slotCheckBoxStateChanged(int)));

void MainWindow::slotCheckBoxStateChanged(int state)
{
    if(state==Qt::Checked)
    {
        ui->checkBox->setText(QObject::tr("选中"));
    }
    else if(state==Qt::Unchecked)
    {
        ui->checkBox->setText(QObject::tr("未选中"));
    }
}

    

4.单选框按钮QRadioButton

   connect(ui->radioButton,SIGNAL(clicked(bool)),this,SLOT(slotRadioButtonClicked(bool)));
   connect(ui->radioButton_2,SIGNAL(clicked(bool)),this,SLOT(slotRadioButton_2Clicked(bool)));

void MainWindow::slotRadioButtonClicked(bool)
{
    if(ui->radioButton->isChecked()==true)
    {
        ui->radioButton->setText(QObject::tr("选中"));
        ui->radioButton_2->setText(QObject::tr("未选中"));
    }
}

void MainWindow::slotRadioButton_2Clicked(bool)
{
    if(ui->radioButton_2->isChecked()==true)
    {
        ui->radioButton_2->setText(QObject::tr("选中"));
        ui->radioButton->setText(QObject::tr("未选中"));
    }
}

运行结果:

     

在界面模式中,只要同属于一个QGroupBox的所有单选按钮都相互关联。

单选按钮和复选按钮的区别

单选按钮:你只能选择而不能取消,当你选择其他的选项时会自动取消。

复选按钮:可以选择和取消。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值