QFileDialog自定義樣式設置SetStytlesheet

 

void QStockView::SlotOutputExcel()
{
	QFileDialog fileDilog;
	fileDilog.setOption(QFileDialog::DontUseNativeDialog, true);
	const QString g_FileDialogQSS =
		" .QFileDialog                                    "
		" {                                              "
		"       background-color: #151515;              "
		"       color: #FFFFFF;                         "
		" }                                              "
		" .QListView                                      "
		" {                                              "
		"       background-color: #151515;               "
		"       color: #FFFFFF;                          "
		" }                                              "
		" .QListView::item                               "
		" {                                              "
		"       background-color: #151515;               "
		"       color: #FFFFFF;                          "
		" }                                              "
		" .QComboBox QAbstractItemView                   "
		" {                                              "
		"       background-color: #151515;               "
		"       color: #FFFFFF;                          "
		" }                                              "
		" .QComboBox                                     "
		" {                                              "
		"       background-color: #151515;              "
		"       color: #FFFFFF;                          "
		" }                                              "
		" .QComboBox QAbstractItemView ::item            "
		" {                                              "
		"       background-color: #151515;              "
		"       color: #FFFFFF;                          "
		" }                                              "
		" .QLineEdit                                     "
		" {                                              "
		"       background-color: #151515;              "
		"       color: #FFFFFF;                          "
		" }                                              "
		" .QFrame                                         "
		" {                                              "
		"       background-color: #151515;               "
		"       color: #FFFFFF;                          "
		" }                                              "
		" .QSidebar                                      "
		" {                                              "
		"       background-color: #151515;               "
		"       color: #FFFFFF;                          "
		" }                                              "
		" .QLabel                                         "
		" {                                              "
		"       background-color: #151515;               "
		"       color: #FFFFFF;                          "
		" }                                              "
		" .QTreeView#treeView                             "
		" {                                              "
		"       background-color: #151515;              "
		"       color: #FFFFFF;                          "
		" }                                              "
		" .QPushButton                                   "
		" {                                              "
		"       background-color: #151515;               "
		"       border: 1px solid #414141;               "
		"       border-radius: 3px;                      "
		"       color: #FFFFFF;                          "
		" }                                              ";
	
	fileDilog.setStyleSheet(g_FileDialogQSS);
	fileDilog.setAcceptMode(QFileDialog::AcceptSave);
	fileDilog.setLabelText(QFileDialog::Accept, tr("保存"));   // 設置對應控件的文字
	fileDilog.setLabelText(QFileDialog::LookIn, (u8"查看"));   // 設置對應控件的文字
	fileDilog.setLabelText(QFileDialog::FileName, (u8"文件名"));   // 設置對應控件的文字
	fileDilog.setLabelText(QFileDialog::FileType, (u8"文件類型"));   // 設置對應控件的文字
	fileDilog.setLabelText(QFileDialog::Reject, (u8"取消"));   // 設置對應控件的文字
	fileDilog.setWindowTitle(QString(u8"保存數據到Excel"));
	fileDilog.setNameFilter(tr(u8"file(*.xlsx)"));
	if (fileDilog.exec() != QDialog::Accepted)
	{
		return;
	}
	//	HRESULT retval = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);和這個衝突無法打開選擇框
	//QString filePath = fileDilog.getSaveFileName(NULL, tr("保存到Excel"), m_defaultPath, tr("*.xlsx"),nullptr, QFileDialog::DontUseNativeDialog);
	QStringList selectfiles = fileDilog.selectedFiles();
	if (selectfiles.size() == 0)
	{
		return;
	}
	QString filePath = selectfiles[0];
	//!!!判空處理
	if (filePath.isEmpty())
		return;
	m_defaultPath = QFileInfo(filePath).absoluteDir().absolutePath();
	QAxObject excel("Excel.Application");
	//!!!獲取工作簿集合
	QAxObject*workbooks = excel.querySubObject("WorkBooks");
	//!!!新建工作簿
	workbooks->querySubObject("Add");
	//!!!獲取當前工作簿
	QAxObject*workbook = excel.querySubObject("ActiveWorkBook");
	if (workbook == nullptr)
		return;
	//!!!獲取表頁對象
	QAxObject*worksheets = workbook->querySubObject("WorkSheets");
	//!!!獲取第一頁
	QAxObject*worksheet = worksheets->querySubObject("Item(int)", 1);
	//!!!獲取權限
	QAxObject*usedrange = worksheet->querySubObject("Usedrange");
	//先保存表頭
	QString headItem = "";
	for (int j = 1; j < ui.tableWidgetHis->columnCount(); j++)
	{
		headItem = ui.tableWidgetHis->horizontalHeaderItem(j)->text();
		worksheet->querySubObject("Cells(int, int)", 1, j )->dynamicCall("setValue(const QVariant&)", headItem.toStdString().c_str());
	}
	//!!!遍歷獲取數據將數據寫入文件
	for (int i = 0; i < ui.tableWidgetHis->rowCount(); i++)
	{
		QTableWidgetItem* pCheck = ui.tableWidgetHis->item(i, 0);
		if (pCheck!=NULL)
		{
			if (pCheck->checkState()==Qt::Checked)
			{
				for (int j = 1; j < ui.tableWidgetHis->columnCount(); j++)
				{				
					//worksheet->querySubObject("Cells(int, int)", i + 1, j+1)->dynamicCall("SetNumberFormatLocal(const QVariant&)", "@");
					worksheet->querySubObject("Cells(int, int)", i + 2, j )->dynamicCall("setValue(const QVariant&)", ui.tableWidgetHis->item(i, j)->text().toStdString().c_str());
				}
			}
		}
	}
	//!!!保存文件
	workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(filePath));
	workbooks->dynamicCall("Close()");
	excel.dynamicCall("Quit()");
	WaringDialog diag("提示", "保存數據到Excel成功!");
	diag.setPicType(0);
	diag.exec();

}

  

void QStockView::SlotOutputExcel(){QFileDialog fileDilog;fileDilog.setOption(QFileDialog::DontUseNativeDialog, true);const QString g_FileDialogQSS =" .QFileDialog                                    "" {                                              ""       background-color: #151515;              ""       color: #FFFFFF;                         "" }                                              "" .QListView                                      "" {                                              ""       background-color: #151515;               ""       color: #FFFFFF;                          "" }                                              "" .QListView::item                               "" {                                              ""       background-color: #151515;               ""       color: #FFFFFF;                          "" }                                              "" .QComboBox QAbstractItemView                   "" {                                              ""       background-color: #151515;               ""       color: #FFFFFF;                          "" }                                              "" .QComboBox                                     "" {                                              ""       background-color: #151515;              ""       color: #FFFFFF;                          "" }                                              "" .QComboBox QAbstractItemView ::item            "" {                                              ""       background-color: #151515;              ""       color: #FFFFFF;                          "" }                                              "" .QLineEdit                                     "" {                                              ""       background-color: #151515;              ""       color: #FFFFFF;                          "" }                                              "" .QFrame                                         "" {                                              ""       background-color: #151515;               ""       color: #FFFFFF;                          "" }                                              "" .QSidebar                                      "" {                                              ""       background-color: #151515;               ""       color: #FFFFFF;                          "" }                                              "" .QLabel                                         "" {                                              ""       background-color: #151515;               ""       color: #FFFFFF;                          "" }                                              "" .QTreeView#treeView                             "" {                                              ""       background-color: #151515;              ""       color: #FFFFFF;                          "" }                                              "" .QPushButton                                   "" {                                              ""       background-color: #151515;               ""       border: 1px solid #414141;               ""       border-radius: 3px;                      ""       color: #FFFFFF;                          "" }                                              ";fileDilog.setStyleSheet(g_FileDialogQSS);fileDilog.setAcceptMode(QFileDialog::AcceptSave);fileDilog.setLabelText(QFileDialog::Accept, tr("保存"));   // 設置對應控件的文字fileDilog.setLabelText(QFileDialog::LookIn, (u8"查看"));   // 設置對應控件的文字fileDilog.setLabelText(QFileDialog::FileName, (u8"文件名"));   // 設置對應控件的文字fileDilog.setLabelText(QFileDialog::FileType, (u8"文件類型"));   // 設置對應控件的文字fileDilog.setLabelText(QFileDialog::Reject, (u8"取消"));   // 設置對應控件的文字fileDilog.setWindowTitle(QString(u8"保存數據到Excel"));fileDilog.setNameFilter(tr(u8"file(*.xlsx)"));if (fileDilog.exec() != QDialog::Accepted){return;}//HRESULT retval = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);和這個衝突無法打開選擇框//QString filePath = fileDilog.getSaveFileName(NULL, tr("保存到Excel"), m_defaultPath, tr("*.xlsx"),nullptr, QFileDialog::DontUseNativeDialog);QStringList selectfiles = fileDilog.selectedFiles();if (selectfiles.size() == 0){return;}QString filePath = selectfiles[0];//!!!判空處理if (filePath.isEmpty())return;m_defaultPath = QFileInfo(filePath).absoluteDir().absolutePath();QAxObject excel("Excel.Application");//!!!獲取工作簿集合QAxObject*workbooks = excel.querySubObject("WorkBooks");//!!!新建工作簿workbooks->querySubObject("Add");//!!!獲取當前工作簿QAxObject*workbook = excel.querySubObject("ActiveWorkBook");if (workbook == nullptr)return;//!!!獲取表頁對象QAxObject*worksheets = workbook->querySubObject("WorkSheets");//!!!獲取第一頁QAxObject*worksheet = worksheets->querySubObject("Item(int)", 1);//!!!獲取權限QAxObject*usedrange = worksheet->querySubObject("Usedrange");//先保存表頭QString headItem = "";for (int j = 1; j < ui.tableWidgetHis->columnCount(); j++){headItem = ui.tableWidgetHis->horizontalHeaderItem(j)->text();worksheet->querySubObject("Cells(int, int)", 1, j )->dynamicCall("setValue(const QVariant&)", headItem.toStdString().c_str());}//!!!遍歷獲取數據將數據寫入文件for (int i = 0; i < ui.tableWidgetHis->rowCount(); i++){QTableWidgetItem* pCheck = ui.tableWidgetHis->item(i, 0);if (pCheck!=NULL){if (pCheck->checkState()==Qt::Checked){for (int j = 1; j < ui.tableWidgetHis->columnCount(); j++){//worksheet->querySubObject("Cells(int, int)", i + 1, j+1)->dynamicCall("SetNumberFormatLocal(const QVariant&)", "@");worksheet->querySubObject("Cells(int, int)", i + 2, j )->dynamicCall("setValue(const QVariant&)", ui.tableWidgetHis->item(i, j)->text().toStdString().c_str());}}}}//!!!保存文件workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(filePath));workbooks->dynamicCall("Close()");excel.dynamicCall("Quit()");WaringDialog diag("提示", "保存數據到Excel成功!");diag.setPicType(0);diag.exec();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章