#include "fileselectdialog.h" #include "ui_fileselectdialog.h" FileSelectDialog::FileSelectDialog(QString filePath, QWidget *parent) : QDialog(parent), ui(new Ui::FileSelectDialog), m_filePath(filePath), m_itemPerPage(8) { ui->setupUi(this); setWindowFlags(Qt::Window | Qt::FramelessWindowHint); setWindowModality(Qt::ApplicationModal); initControl(); initData(); refreshUi(); m_fileName.clear(); } FileSelectDialog::~FileSelectDialog() { delete ui; } void FileSelectDialog::initControl() { m_itemBtnList.clear(); m_itemBtnList.append(ui->button1); m_itemBtnList.append(ui->button2); m_itemBtnList.append(ui->button3); m_itemBtnList.append(ui->button4); m_itemBtnList.append(ui->button5); m_itemBtnList.append(ui->button6); m_itemBtnList.append(ui->button7); m_itemBtnList.append(ui->button8); //根据不同分辨率设置控件的位置和尺寸 switch (g_emResolut) { case resolution1910: initResolution1910(); break; case resolution1006: initResolution1006(); break; default: this->resize(1920,1080); break; } initControlStyle();//初始化窗体控件样式 } void FileSelectDialog::initResolution1910() { double factoryX = 1.875; //缩放比例系数 double factoryY = 1.8; this->resize(1024*factoryX,600*factoryY); ui->frameBack->setGeometry(0,0,1024*factoryX,600*factoryY); for(int i = 0; i < m_itemPerPage; i++)//白色按下的效果 { m_itemBtnList[i]->setGeometry(153*factoryX,(96 + i * 53)*factoryY,718*factoryX,53*factoryY); QString style1 = "QPushButton{outline: none;border:0px;border-radius:7px;background-color:rgba(255, 255, 255, 0);color: rgb(255, 255, 255);}"; m_itemBtnList[i]->setStyleSheet(style1); m_itemBtnList[i]->setTopImage(NULL); } ui->framePageBtn->setGeometry(595*factoryX, 545*factoryY, 600*factoryX, 45*factoryY); ui->buttonPgUp->setGeometry(0, 0, 96*factoryX, 40*factoryY); ui->buttonPgDn->setGeometry(106*factoryX, 0, 96*factoryX, 40*factoryY); ui->buttonOk->setGeometry(212*factoryX, 0, 96*factoryX, 40*factoryY); ui->buttonCancel->setGeometry(318*factoryX, 0, 96*factoryX, 40*factoryY); ui->labelPage->setGeometry(10*factoryX, 570*factoryY, 181*factoryX, 21*factoryY); } void FileSelectDialog::initResolution1006() { this->resize(1024,600); ui->frameBack->setGeometry(0,0,1024,600); for(int i = 0; i < m_itemPerPage; i++)//白色按下的效果 { m_itemBtnList[i]->setGeometry(153,96 + i * 53,718,53); QString style1 = "QPushButton{outline: none;border:0px;border-radius:7px;background-color:rgba(255, 255, 255, 0);color: rgb(255, 255, 255);}"; m_itemBtnList[i]->setStyleSheet(style1); m_itemBtnList[i]->setTopImage(NULL); m_itemBtnList[i]->setFont(fontNormal_6); } ui->framePageBtn->setGeometry(595,545,600,45); ui->buttonPgUp->setGeometry(0,0,96,40); ui->buttonPgDn->setGeometry(106,0,96,40); ui->buttonOk->setGeometry(212,0,96,40); ui->buttonCancel->setGeometry(318,0,96,40); ui->labelPage->setGeometry(10, 570, 181, 21); } void FileSelectDialog::initControlStyle() { SetControlStyle setControlStyle; setControlStyle.setUiName(this->parent()->objectName()); //背景图 QString frameBackImgPath = setControlStyle.getSharedStyleSheet(); ui->frameBack->setStyleSheet(frameBackImgPath); //条目 for(int i = 0; i < m_itemPerPage; i++) { m_itemBtnList[i]->setLabelFont(fontNormal_1); connect(m_itemBtnList[i], SIGNAL(clicked(bool)), this, SLOT(btnclicked())); } //四个按钮样式表一样 ui->buttonPgUp->setOrangeGradientBottomStyle(BORDER_RADIUS2); ui->buttonPgUp->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgUp->objectName()),12); ui->buttonPgDn->setOrangeGradientBottomStyle(BORDER_RADIUS2); ui->buttonPgDn->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgDn->objectName()),12); ui->buttonOk->setOrangeGradientBottomStyle(BORDER_RADIUS2); ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonOk->objectName()),12); ui->buttonCancel->setOrangeGradientBottomStyle(BORDER_RADIUS2); ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonCancel->objectName()),12); } void FileSelectDialog::refreshUi() { //清空全部按钮数据 foreach (QPushButton* button, m_itemBtnList) { button->setText(""); button->setEnabled(false); button->setVisible(false); } //计算页码范围 m_pageNums = m_fileNameList.size() / m_itemPerPage;//向上取整 总页数 m_pageNums = (m_fileNameList.size() % m_itemPerPage == 0) ? m_pageNums : m_pageNums + 1; if (m_curPages > m_pageNums)// 当前页 { m_curPages = m_pageNums; } if (m_curPages < 1) { m_curPages = 1; } // qDebug()<<"m_pageNums" < m_fileNameList.size() - 1) { break; } else{ QString str = m_fileNameList[index]; m_itemBtnList[i]->setText(str); m_itemBtnList[i]->setEnabled(true); m_itemBtnList[i]->setVisible(true); } } // 页信息 QString str = tr("pageNum: ") + QString("%1/%2").arg(m_curPages).arg(m_pageNums);//页数: ui->labelPage->setText(str); } void FileSelectDialog::initData() { m_fileNameList.clear(); QDir dir(m_filePath); m_curPages = 0; m_pageNums = 0; // 打开文件所在的路径 if(!dir.exists()) { qDebug() << "dirpath not exist, name=" << m_filePath; dir.mkdir(m_filePath);//创建花样文件夹 } dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); // 设置类型过滤器 dir.setSorting(QDir::DirsFirst | QDir::IgnoreCase); // 设置排序方式 QFileInfoList fileList = dir.entryInfoList(); int count = fileList.count(); for(int i = 0; i < count ; i++){ QFileInfo fileInfo = fileList[i]; if(fileInfo.suffix().toUpper() == "HS"){ QString str = fileInfo.fileName(); m_fileNameList.append(str); qDebug()<sender(); qDebug()<< pBtn->text(); for(int i = 0; i < m_itemPerPage; i++)//白色按下的效果 { QString style1 = "QPushButton{outline: none;border:0px;border-radius:7px;background-color:rgba(255, 255, 255, 0);color: rgb(255, 255, 255);}"; m_itemBtnList[i]->setStyleSheet(style1); } QString style1 = "QPushButton{outline: none;border:0px;border-radius:7px;background-color:rgba(255, 255, 255, 50);color: rgb(255, 255, 255);}"; pBtn->setStyleSheet(style1); m_fileName = pBtn->text(); } QString FileSelectDialog::getFileName() { return m_fileName; } void FileSelectDialog::on_buttonOk_clicked() { done(1); } void FileSelectDialog::on_buttonCancel_clicked() { done(0); } void FileSelectDialog::on_buttonPgDn_clicked() { m_curPages++; refreshUi(); } void FileSelectDialog::on_buttonPgUp_clicked() { m_curPages--; refreshUi(); }