Qt实例:QCalendarWidget使用,日历控件使用

该篇文章主要继上篇文章的延续:
上篇文章链接
主要功能:
鼠标点击日历后,可响应QTableWidge控件,显示对应的(以年月日命名的txt文档)数据于QTableWidge表格控件中。

基于QT控件的实现:
在这里插入图片描述
效果图:
在这里插入图片描述

  1. h文件:
 private slots:
       void showTimeSlot();
       void setDataSlot();
  1. cpp文件:
    构造函数:
/*****lineEdit响应日历控件**********/
    ui->calendarlabel->setText("选择日期: ");
    connect(ui->calendarlineEdit,SIGNAL(cursorPositionChanged(int,int)),this,SLOT(showTimeSlot()));
        //隐藏垂直头
    ui->calendarWidget->setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader);
        //隐藏时间控件
    ui->calendarWidget->setHidden(true);
        //时间控件点击事件
    connect(ui->calendarWidget,SIGNAL(clicked(QDate)),this,SLOT(setDataSlot()));

槽函数:

void MainWindow::showTimeSlot()
{
    ui->calendarWidget->setHidden(false);
}

/*****tableWidget响应日历控件(文件名与文件夹名相同,均为鼠标单击选择的日历日期(年月日))**********/
void MainWindow::setDataSlot()
{
    //接收选择时间
    QDate date = ui->calendarWidget->selectedDate();
    //时间格式化
    QString str = date.toString("yyyy.MM.dd");//文件名
    QString dir_str2 = date.toString("yyyy.MM.dd");//文件夹名
    //赋值
    ui->calendarlineEdit->setText(str);
    //日期控件隐藏
   // calendarWidget->setHidden(true);


    QString fileName = dir_str2 +"/"+ str + ".txt";
   // QFile file(fileName);
    if(!fileName.isEmpty())
    {
        QFile file;
        file.setFileName(fileName);
        //打开文件
        if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
        {
               QMessageBox msg;
               msg.setText("打开文件失败!");
               msg.exec();
        }
        else
        {
            QStringList textList;   //记录文件中每一行的数据
//          textList = {"序号", "登录名", "姓名"}; //向添加表头添加内容
//          ui->tableWidget->setHorizontalHeaderLabels(textList);
            QTextStream in(&file);
            if(!file.size())
            {
                QMessageBox::warning(0,tr("警告"),tr("文件大小为空!"),QMessageBox::Ok);
            }
            else
            {
                //将文件数据导入表格
                int r_count = 0;        //统计文件的行数
                while (!in.atEnd())
                {

                     QString line = in.readLine();
                     textList.append(line);          //保存文件的数据
                     r_count++;                      //记录文件的行数 前两行为表头
                 }
                     qDebug() << "r_count:  "<< r_count;
                     file.close();       //关闭文件
                     if(!textList.isEmpty())
                     {
                         QStringList listColHeader = textList.at(1).split("\t");
                         QStringList listRowHeader = textList.at(0).split("\t");
                         int c_count = listRowHeader.count();
                         qDebug() << "c_count:  "<< c_count;
                         ui->tableWidget->clear();
                         ui->tableWidget->setRowCount(r_count);      //前两行是行列表头
                         ui->tableWidget->setColumnCount(c_count-1);   //最后一行是“\t"
                        // ui->tableWidget->setHorizontalHeaderLabels(listRowHeader);
                        // ui->tableWidget->setVerticalHeaderLabels(listColHeader);
                         ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"时间"<<"操作人"<<"T值"<<"图片"); //向添加表头添加内容
                         qDebug()<<"start importTable row count:::"<<r_count<<"col count:::"<<c_count;
                         for(int row = 0; row < r_count; row++)
                         {
                             qDebug() << "row:  "<< row;
                             QStringList tmpList;
                             tmpList = textList.at(row).split("\t");
                             for(int col = 0; col < c_count; col++)
                             {
                                 qDebug() << "tmpList.at(col):  "<< tmpList.at(col) <<"col:  "<< col;
                                 QTableWidgetItem *item = new QTableWidgetItem(tmpList.at(col));
                                 ui->tableWidget->setItem(row, col, item);
                             }
                          }
                          QMessageBox::information(0,tr("提示"),tr("导入成功!"));
                      }

                }
           }
       }
       else
       {
           QMessageBox::warning(0,tr("警告"),tr("文件名未指定!"),QMessageBox::Ok);
       }
}

部分说明:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值