【Qt入門實踐】單選按鈕、多選按鈕、QString、排序示例


一  案例:----排序--利用STL裏的容器、算法



在主界面裏 添加 控件:
5個 LineEdit ----用於放置 數字 
1 PushButton ----用於 觸發 排序 函數

排序函數爲:


void Test01Widget::on_pushButtonSort_clicked()
{
    vector<int>  vec1;
    int a0=ui->lineEditNum01->text().toInt();
    vec1.push_back(a0);
    int a1=ui->lineEditNum02->text().toInt();
    vec1.push_back(a1);
    int a2=ui->lineEditNum03->text().toInt();
    vec1.push_back(a2);
    int a3=ui->lineEditNum04->text().toInt();
    vec1.push_back(a3);
    int a4=ui->lineEditNum05->text().toInt();
    vec1.push_back(a4);
    sort(vec1.begin(),vec1.end());


    QString str1=QString::number(vec1.at(0));
    QString str2=QString::number(vec1.at(1));
    QString str3=QString::number(vec1.at(2));
    QString str4=QString::number(vec1.at(3));
    QString str5=QString::number(vec1.at(4));
    ui->lineEditNum01->setText(str1);
    ui->lineEditNum02->setText(str2);
    ui->lineEditNum03->setText(str3);
    ui->lineEditNum04->setText(str4);
    ui->lineEditNum05->setText(str5);


    return;
}




二  案例:----點擊保存按鈕 可以將界面的學生信息 寫到a.txt文件裏:



在界面上增加下列控件:
number 學號  LineEdit
name 姓名  LineEdit
sec 性別  ComboBox
age 年齡  LineEdit
chengji 成績  RadioButton   3個  優 良  中
aihao 愛好  CheckButton   3個  游泳 聽音樂  跑步


//代碼:--點擊保存按鈕  觸發的函數
void ResultDialog::on_pushButtonSave_clicked()
{
    int number=m_ui->lineEditNumber->text().toInt();
    char *name1=m_ui->lineEditName->text().toAscii().data();
    char name[20];
    strcpy(name,name1);


    char *sex1=m_ui->comboBoxSex->currentText().toAscii().data();
    char sex[20];
    strcpy(sex,sex1);


    int age=m_ui->lineEditAge->text().toInt();
    char chengji[10];
    if(m_ui->radioButtonA->isChecked())
    {
        strcpy(chengji,"優");
    }
    else if(m_ui->radioButtonB->isChecked())
    {
        strcpy(chengji,"良");
    }
    else if(m_ui->radioButtonC->isChecked())
    {
        strcpy(chengji,"中");
    }
    else
    {
        QMessageBox::warning(this,"告警信息","未選成績");
        return ;
        //strcpy(chengji,"");
    }
    QString str;
    if(m_ui->checkBoxMusic->isChecked())
    {
        str+="音樂";
    }
    if(m_ui->checkBoxSwim->isChecked())
    {
        str+="游泳";
    }
    if(m_ui->checkBoxWalk->isChecked())
    {
        str+="跑步";
    }
    char *str_c=str.toAscii().data();


    FILE *fp=fopen("a.txt","w");
    fprintf(fp,"%d %s %s %d %s %s ",number,name,sex,age,chengji,str_c);
    fclose(fp);
    return;
}





三 案例:Spin Box組件的使用


該組件  很像ComboBox組件,但下拉後,只能選擇數字。
使用步驟:
1、在界面 放1個Spin Box組件
   修改 Object Name爲 合適的名字
   
2、在 界面對應的cpp文件 中的 構造函數中,增加下列語句
m_ui->spinBoxAge->setRange(1,99);      //本例中,該組件放 學生年齡,要求在1-99之間

3、在其它函數中,可以讀取該 Spin Box組件 選取的值了


void ResultDialog::on_pushButtonSave_clicked()
{
    int number=m_ui->lineEditNumber->text().toInt();
    char *name1=m_ui->lineEditName->text().toAscii().data();
    char name[20];
    strcpy(name,name1);


    char *sex1=m_ui->comboBoxSex->currentText().toAscii().data();
    char sex[20];
    strcpy(sex,sex1);


    //int age=m_ui->lineEditAge->text().toInt();
    int age=m_ui->spinBoxAge->text().toInt();			//該語句使用了 SpinBox組件
    char chengji[10];
    if(m_ui->radioButtonA->isChecked())
    {
        strcpy(chengji,"優");
    }
    else if(m_ui->radioButtonB->isChecked())
    {
        strcpy(chengji,"良");
    }
    else if(m_ui->radioButtonC->isChecked())
    {
        strcpy(chengji,"中");
    }
    else
    {
        QMessageBox::warning(this,"告警信息","未選成績");
        return ;
        //strcpy(chengji,"");
    }
    QString str;
    if(m_ui->checkBoxMusic->isChecked())
    {
        str+="音樂";
    }
    if(m_ui->checkBoxSwim->isChecked())
    {
        str+="游泳";
    }
    if(m_ui->checkBoxWalk->isChecked())
    {
        str+="跑步";
    }
    char *str_c=str.toAscii().data();


    FILE *fp=fopen("a.txt","w");
    fprintf(fp,"%d %s %s %d %s %s ",number,name,sex,age,chengji,str_c);
    fclose(fp);
    return;
}







四  案例:TableWidget組件的使用


案例:----將 學生信息,全部顯示在 TableWidget組件裏
步驟:
1、在界面上增加 TableWidget組件,並修改Object Name爲合適的名字
2、在界面的構造函數中,設置表格的行數、列數、表頭
3、在 添加按鈕的 觸發函數中,讀界面上的學生信息,然後寫到表格的第1行中



//cpp文件代碼:
#include "studentmanage001widget.h"
#include "ui_studentmanage001widget.h"


StudentManage001Widget::StudentManage001Widget(QWidget *parent)
    : QWidget(parent), ui(new Ui::StudentManage001Widget)
{
    ui->setupUi(this);
    
    ui->tableWidgetStudent->setRowCount(5);						//設置表格的 行數
    ui->tableWidgetStudent->setColumnCount(6);					//設置表格的 列數


    QTableWidgetItem *itemNumber=new QTableWidgetItem("學號");			//下面都是在設置 橫向表頭
    ui->tableWidgetStudent->setHorizontalHeaderItem(0,itemNumber);
    QTableWidgetItem *itemName=new QTableWidgetItem("姓名");
    ui->tableWidgetStudent->setHorizontalHeaderItem(1,itemName);
    QTableWidgetItem *itemSex=new QTableWidgetItem("性別");
    ui->tableWidgetStudent->setHorizontalHeaderItem(2,itemSex);
    QTableWidgetItem *itemAge=new QTableWidgetItem("年齡");
    ui->tableWidgetStudent->setHorizontalHeaderItem(3,itemAge);
    QTableWidgetItem *itemChengji=new QTableWidgetItem("成績");
    ui->tableWidgetStudent->setHorizontalHeaderItem(4,itemChengji);
    QTableWidgetItem *itemAihao=new QTableWidgetItem("愛好");
    ui->tableWidgetStudent->setHorizontalHeaderItem(5,itemAihao);


}


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


void StudentManage001Widget::on_pushButtonAppend_clicked()				//點擊 添加按鈕後,觸發的函數
{
    QLabel *labelNumber=new QLabel(ui->lineEditNumber->text(),this);	//利用QLabel來轉化LineEdit
    ui->tableWidgetStudent->setCellWidget(0,0,labelNumber);				//第3個參數,要求是QWidget *,或它的派生類。但如果,直接放ui->lineEditNumber,則實際上會剪切到表格中,因此,需要利用QLabel來進行轉換
    ui->tableWidgetStudent->setCellWidget(0,1,ui->lineEditName);		//後面的語句,也都需要做上述處理
    ui->tableWidgetStudent->setCellWidget(0,2,ui->comboBoxSex);
    ui->tableWidgetStudent->setCellWidget(0,3,ui->spinBoxAge);
    //ui->tableWidgetStudent->setCellWidget(0,4,ui->);
    //ui->tableWidgetStudent->setCellWidget(0,5,ui->lineEditNumber);


}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章