ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

qt控件----button

2021-08-02 16:29:47  阅读:211  来源: 互联网

标签:控件 Widget love button ---- setText ui pushButton


来源:微信公众号「编程学习基地」

文章目录

示例程序截图:
请添加图片描述

QPushButton

pushButton是Qt中最常用的按钮,主要使用的函数为以下几个

  • SetText //设置文字
  • SetMenu //设置菜单
  • Clicked //点击信号

QPushButton继承关系
请添加图片描述

UI拖拽一个pushbutton到界面上

UI实现


public:
    QPushButton *pushButton;
//初始化UI
void setupUi(QWidget *Widget)
{
    if (Widget->objectName().isEmpty())
        Widget->setObjectName(QStringLiteral("Widget"));
    Widget->resize(595, 402);
    /***** 初始化UI里面的控件 *****/
    pushButton = new QPushButton(Widget);
    pushButton->setObjectName(QStringLiteral("pushButton"));
    pushButton->setGeometry(QRect(90, 60, 75, 23));

    retranslateUi(Widget);

    QMetaObject::connectSlotsByName(Widget);
} // setupUi
//对UI进行修改
void retranslateUi(QWidget *Widget)
{
    Widget->setWindowTitle(QApplication::translate("Widget", "Widget", Q_NULLPTR));
    pushButton->setText(QApplication::translate("Widget", "abc ", Q_NULLPTR));
} // retranslateUi

代码实现

	QPushButton* button = new QPushButton(this);
    button->setGeometry(QRect(0,0,75,23));  //QRect(x坐标,y坐标,宽,高
    button->setText("开");

信号与槽

ui右键转到槽->clicked()

Qt Creater自动生成槽函数并且自动关联信号与槽

对槽函数进行修改

button切换
void Widget::on_pushButton_clicked()
{
    static int flag = 0;
    if(flag){
         flag = 0;
         ui->pushButton->setText("open");
    }
    else{
        flag = 1;
        ui->pushButton->setText("close");
    }
}

代码关联信号与槽

connect(this>button,SIGNAL(clicked(bool)),this,SLOT(My_pushButton_clicked()));
void Widget::My_pushButton_clicked()
{
    static int flag1 = 0;
    if(flag1){
         flag1 = 0;
         this->button->setText("开");
    }
    else{
        flag1 = 1;
        this->button->setText("关");
    }
}

设置菜单

MenuButton = new QPushButton(this);
MenuButton->setGeometry(QRect(0,90,75,23));  //QRect(x坐标,y坐标,宽,高

QMenu *pMenu = new QMenu(this);
QAction* Action1 = new QAction;
Action1->setText("first");
pMenu->addAction(Action1);
pMenu->addAction("Second");
pMenu->addSeparator();
pMenu->addAction("third");
pMenu->addAction("Fourth");
onnect(Action1, SIGNAL(triggered()), this, SLOT(slot_ClickMenu1()));

// 设置菜单
MenuButton->setMenu(pMenu);
//槽函数
void MainWindow::slot_ClickMenu1()
{
    QMessageBox msgBox;
        msgBox.setText("点击了第一个QMenu菜单");
        msgBox.exec();
}

QToolButton

QToolButton类提供了用于命令或选项可以快速访问的按钮,通常可以用在QToolBar
里面。一般不会放在Widget中直接使用

//一般toolbutton用来关联MainToolBar里面的QAction
ui->toolButton->setDefaultAction(ui->actionopen);

QRadioButton

QRadioButton 单选项按钮, 状态分为选中和未选中,单选框一般用于在多选1。
单选题

  • setText()函数
  • isChecked()函数
  • setChecked()函数
  • clicked()信号
  • QButtonGroup选项按钮组
QButtonGroup* sex;
/*          RadioButton CheckButton            */
    sex = new QButtonGroup;
    sex->setExclusive(true);   //重点    设置互斥
    sex->addButton(ui->radioButton,0);
    sex->addButton(ui->radioButton_2,1);
//关联信号
connect(sex, SIGNAL(buttonClicked(int)), this,SLOT(slot_RadioButton_checket(int)));
//槽函数
void MainWindow::slot_RadioButton_checket(int ButtonId)
{
    sex_index=ButtonId;
    switch(ButtonId)
    {
        case 0:
            qDebug()<<"点击了男";
        break;
        case 1:
            qDebug()<<"点击了女";
        break;
        default:
            qDebug()<<"default";
    }
}

QCheckBox

QCheckBox复选项按钮, 状态分为选中和未选中,复选框一般用于在多个中选
择多个。—— 多选题

  • setText()函数
  • setCheckState()函数
  • stateChanged()信号
  • QButtonGroup选项按钮组
QButtonGroup* love;
	love = new QButtonGroup;
    love->setExclusive(false); //重点    设置不互斥
    love->addButton(ui->checkBox,0);
    love->addButton(ui->checkBox_2,1);
    love->addButton(ui->checkBox_3,2);
//关联信号
connect(love, SIGNAL(buttonClicked(int)), this, SLOT(slot_CheckButton_checket(int)));
//槽函数
void MainWindow::slot_CheckButton_checket(int ButtonId)
{
    //love_index = ButtonId;
    switch(ButtonId)
    {
    case 0:
        qDebug()<<"点击了打王者";
        break;
    case 1:
        qDebug()<<"点击了看综艺";
        break;
    case 2:
        qDebug()<<"点击了聊妹纸";
        break;
    default:
        qDebug()<<"default";
        break;
    }
}

提交信息

void MainWindow::on_pushButton_2_clicked()
{
    QCheckBox* temp;
    QString love_info;
    /*     匹配每一个CheckButton判断那几个checkbutton是选中状态     */
    for(int i=0;i<3;i++)
    {
        temp = (QCheckBox*)love->button(i);
        if(temp->isChecked())
        {
            love_info+=QString::number(i);
        }
    }
    /*        弹出提示框          */
    QMessageBox msgBox;
        msgBox.setText("性别选择为:"+QString::number(sex_index)+"\t"
                       +"爱好选择为:"+love_info);
        msgBox.exec();
}

标签:控件,Widget,love,button,----,setText,ui,pushButton
来源: https://blog.csdn.net/qq_44519484/article/details/119327759

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有