https://github.com/tekintian/qt-common-controls-demo
qt常用控件演示项目, JUST FOR LEARNING QT!
https://github.com/tekintian/qt-common-controls-demo
Last synced: 4 months ago
JSON representation
qt常用控件演示项目, JUST FOR LEARNING QT!
- Host: GitHub
- URL: https://github.com/tekintian/qt-common-controls-demo
- Owner: tekintian
- Created: 2021-02-23T08:58:44.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-03-01T08:06:45.000Z (over 4 years ago)
- Last Synced: 2025-04-09T11:48:45.442Z (6 months ago)
- Language: C++
- Size: 2.81 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# QT常用控件演示 qt common controls demo
qt常用控件演示项目, JUST FOR LEARNING QT!##QT 帮助文档查看方法

建议直接使用软件自带的帮助文档, 查找帮助文档的时候直接使用英文 搜索
找到相应的类后 先看 Contents 中的索引:
找方法: 依次查看 Public Functions, Public Slots, Protected Functions , Reimplemented Protected Functions ; 如果这些里面都没有找到, 可以到类的继承类中去查找, 查看继承类的方法直接点击 左侧的 Inherits: 后面的类名称即可
## 信号或者槽函数有重载的时候 需要使用指针

~~~cpp
// spinbox的值改变,跟随改变进度条的值
// 因为QSpinBox::valueChanged 这个信号有重载,所以这里必须使用指针, 指明我们要使用的是 void valueChanged(int i)
void (QSpinBox::*sbptr)(int) = &QSpinBox::valueChanged;
connect(ui->spinBox, sbptr,ui->horizontalSlider,&QSlider::setValue);// 进度条的值改变, 跟随改变spinbox的值; 这里的信号&QSlider::valueChanged 无重载,所以可以直接使用
connect(ui->horizontalSlider,&QSlider::valueChanged,[=](int i){
ui->spinBox->setValue(i);
});~~~
ps: connect 可使用常规模式,或者使用ladbda模式, 推荐使用lambda模式,
使用时 需要注意信号的形参
自定义控件 使用
1. add new --> QT-->设计师界面类;
2. 界面模板这里一般选择Widget : 注意这里的类型需要与你在容器中提升时的类型保存一致.
3. 新建完成后可双击 新建的.ui文件 对自定义控件进行编辑
4. 在其他界面中使用自定义控件: 先添加一个container的widget容器; 然后选择容器后 右键 -->提升到, 打开自定义控件提升页面, 录入自定义类名称,选择全局后,点击添加, 然后选择添加的类, 最后点击提升即可

### 自定义控件提供外部API接口
- mywidget.h
~~~mywidget.h
public:
explicit MyWidget(QWidget *parent = nullptr);
~MyWidget();
// 自定义控件外部接口定义
void mySetValue(int value);
int myGetValue(void);
~~~- mywidget.cpp
~~~mywidget.cpp
#include "mywidget.h"
#include "ui_mywidget.h"
#include
#include
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setupUi(this);
// spinbox的值改变,跟随改变进度条的值
// 因为QSpinBox::valueChanged 这个信号有重载,所以这里必须使用指针, 指明我们要使用的是 void valueChanged(int i)
void (QSpinBox::*sbptr)(int) = &QSpinBox::valueChanged;
connect(ui->spinBox, sbptr,ui->horizontalSlider,&QSlider::setValue);
// 进度条的值改变, 跟随改变spinbox的值; 这里的信号&QSlider::valueChanged 无重载,所以可以直接使用
connect(ui->horizontalSlider,&QSlider::valueChanged,[=](int i){
ui->spinBox->setValue(i);
});
}
MyWidget::~MyWidget()
{
delete ui;
}
//MyWidget外部接口实现
void MyWidget::mySetValue(int value)
{
// 设置进度条slider的值
ui->horizontalSlider->setValue(value);
}
int MyWidget::myGetValue(void)
{
// 获取进度条的值
return ui->horizontalSlider->value();
}
~~~- mainwindow.cpp
~~~mainwindow.cpp
//通过自定义控件的自定义外部接口获取自定义控件的进度条的值
connect(ui->pushButton_getApi, &QPushButton::clicked,[=](){
qDebug()<<"进度条的值:"<< ui->widget->myGetValue();
});connect(ui->pushButton_setApi,&QPushButton::clicked,[=](){
ui->widget->mySetValue(99); // 通过自定义控件的api设置进度条的值
});~~~
## lambdas 演示
~~~cpp
#includeusing namespace std;
int main()
{/*
* [capture list] (parameter list) ->return_value_type {function body}
* *//*
//Give lambda function a name and call it
auto func = [](){
cout << "Hello World!" << endl;
};func();
*/
/*
*
* //Call lambda function directly after definition
[](){
cout << "Hello World!" << endl;
}();
*//*
//Define a lambda function that takes parameters[](int a , int b){
cout << " a + b = " << a + b <int{
return a + b;
}(7,3) << endl;*/
/*
//Capture Listsint a = 7;
int b = 3;[a,b]()
{
cout << " a + b = " << a + b <Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);//QGridLayout * layout = new QGridLayout(this);
QGridLayout * layout = new QGridLayout();//First row
layout->addWidget(ui->button1,0,0);
layout->addWidget(ui->button2,0,1);
layout->addWidget(ui->button3,0,2,2,1);//Second row
layout->addWidget(ui->button4,1,0);
layout->addWidget(ui->button5,1,1);//Third row
layout->addWidget(ui->button7,2,0,1,2);
layout->addWidget(ui->button9,2,2);setLayout(layout);
}Widget::~Widget()
{
delete ui;
}~~~
### QCheckBoxRadioButtonDemo
~~~cpp
#include "widget.h"
#include "ui_widget.h"
#include
#includeWidget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);QButtonGroup * buttonGroup = new QButtonGroup(this);
buttonGroup->addButton(ui->windowsCheckbox);
buttonGroup->addButton(ui->macCheckBox);
buttonGroup->addButton(ui->linuxCheckBox);buttonGroup->setExclusive(true);
}Widget::~Widget()
{
delete ui;
}void Widget::on_windowsCheckbox_toggled(bool checked)
{
if( checked)
{
qDebug() << "Windows Checkbox is checked";
}else
{
qDebug() << "Windows Checkbox is unchecked";
}
}void Widget::on_beerCheckBox_toggled(bool checked)
{
if( checked)
{
qDebug() << "Beer Checkbox is checked";
}else
{
qDebug() << "Beer Checkbox is unchecked";
}
}void Widget::on_aRadioButton_toggled(bool checked)
{
if( checked)
{
qDebug() << "A radiobutton is checked";
}else
{
qDebug() << "A radiobutton is unchecked";
}
}void Widget::on_grabData_clicked()
{
if( ui->windowsCheckbox->isChecked())
{
qDebug() << "Windows Checkbox is checked";
}else
{
qDebug() << "Windows Checkbox is unchecked";
}}
void Widget::on_setStateButton_clicked()
{
//Exclusive
if( ui->windowsCheckbox->isChecked())
{
ui->windowsCheckbox->setChecked(false);
}else
{
ui->windowsCheckbox->setChecked(true);
}//Non exclusive checkbox group
if( ui->beerCheckBox->isChecked())
{
ui->beerCheckBox->setChecked(false);
}else
{
ui->beerCheckBox->setChecked(true);
}}
~~~
### QList
~~~cpp
//Declare the list
QList stringList;//Put data in the list
stringList << " I am " << " lovin " << " Qt";
// [ "I am", " loving ", " Qt"]
stringList.append(" a ");
stringList.append( " lot !");//Get the data from the list
qDebug() << "The first element is " << stringList[0];
qDebug() << "The second element is " << stringList[1];
qDebug() << "The third element is " << stringList[2];//Get the number of elements
qDebug() << "The number of elements in my list is : " << stringList.count();//Loop through the elements
for( int i = 0 ; i < stringList.count() ; i++)
{
qDebug() << "The element at index "<< QString::number(i) << " is " << stringList.at(i);
}
~~~### QMessageBox演示
~~~cpp
QPushButton * button = new QPushButton(this);
button->setText("Click Me");
button->move(200,200);
connect(button,&QPushButton::clicked,[=](){/*
//The hard way
QMessageBox message;
message.setMinimumSize(300,200);
message.setWindowTitle("Message Title");
message.setText("Something happened");
message.setInformativeText("Do you want to do something about it ?");
message.setIcon(QMessageBox::Critical);
message.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
message.setDefaultButton(QMessageBox::Cancel);int ret = message.exec();
*//*
//Critical Message
int ret = QMessageBox::critical(this,"Message Title","Something happened. Do you want to do something about it ?",
QMessageBox::Ok | QMessageBox::Cancel);
*//*
//Information Message
int ret = QMessageBox::information(this,"Message Title","Something happened. Do you want to do something about it ?",
QMessageBox::Ok | QMessageBox::Cancel);
*//*
//Question
int ret = QMessageBox::question(this,"Message Title","Something happened. Do you want to do something about it ?",
QMessageBox::Ok | QMessageBox::Cancel);*/
//Warning message
int ret = QMessageBox::warning(this,"Message Title","Something happened. Do you want to do something about it ?", QMessageBox::Ok | QMessageBox::Cancel);if ( ret == QMessageBox::Ok)
{
qDebug() << "User clicked on OK";
}if ( ret == QMessageBox::Cancel)
{
qDebug() << "User clicked on Cancel";
}});
~~~### QVBoxLayout
~~~cpp
#include "widget.h"
#include "ui_widget.h"
#include
#includeWidget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);//Declare the widget
QWidget * widget = new QWidget(this);//Declare the layout for the widget
QVBoxLayout * layout = new QVBoxLayout();layout->addWidget(new QPushButton("Button1",this));
layout->addWidget(new QPushButton("Button2",this));
layout->addWidget(new QPushButton("Button3",this));
QPushButton * button4 = new QPushButton("Button4",this);
connect(button4,&QPushButton::clicked,[=](){
qDebug() << "Button4 from custom tab clicked";
});
layout->addWidget(button4);
layout->addSpacerItem(new QSpacerItem(100,200));//Set the layout to the widget
widget->setLayout(layout);//Add the widget to the layout
//ui->tabWidget->addTab(widget,"Tab 4");
ui->tabWidget->insertTab(1,widget,"Tab 4");
}Widget::~Widget()
{
delete ui;
}void Widget::on_tab1Button_clicked()
{
qDebug() << "Tab1 button clicked";
}~~~
## QListWidget
~~~cpp
#include "widget.h"
#include "ui_widget.h"
#includeWidget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->listWidget->setSelectionMode(QAbstractItemView::MultiSelection);
}Widget::~Widget()
{
delete ui;
}void Widget::on_addItemButton_clicked()
{
ui->listWidget->addItem("MyItem");}
void Widget::on_deleteItemButton_clicked()
{
//Delete item : use takeItem
ui->listWidget->takeItem(ui->listWidget->currentRow());
}void Widget::on_selectedItemsButton_clicked()
{
// Get the list of selected items
QList list = ui->listWidget->selectedItems();for( int i = 0; i < list.count(); i++)
{
qDebug() << "Selected item : " << list.at(i)->text() << " , row number id : "<<
ui->listWidget->row(list.at(i));}
}~~~
### qt菜单栏
~~~cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
#include
#includeMainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}MainWindow::~MainWindow()
{
delete ui;
}void MainWindow::on_actionQuit_triggered()
{
statusBar()->showMessage("App will be killed in 5 seconds...");
QTimer::singleShot(5000,this,SLOT(quitApp()));}
void MainWindow::on_actionCopy_triggered()
{
ui->textEdit->copy();
}void MainWindow::on_actionCut_triggered()
{
ui->textEdit->cut();
}void MainWindow::on_actionPaste_triggered()
{
ui->textEdit->paste();
}void MainWindow::on_actionUndo_triggered()
{
ui->textEdit->undo();
}void MainWindow::on_actionRedo_triggered()
{
ui->textEdit->redo();
}void MainWindow::on_actionAbout_triggered()
{
QMessageBox::about(this,"Message","This is demo app to show how to use menus, toolbars and actions in Qt");
}void MainWindow::on_actionAbout_Qt_triggered()
{
QApplication::aboutQt();
}void MainWindow::quitApp()
{
QApplication::quit();
}#include "mainwindow.h"
#include
#include
#include
#include
#include
#includeMainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{//Add central widget
QPushButton * button = new QPushButton("Hello",this);
setCentralWidget(button);//Declare Quit Action
QAction * quitAction = new QAction("Quit");
connect(quitAction,&QAction::triggered,[=](){
QApplication::quit();
});//Add menus
QMenu * fileMenu = menuBar()->addMenu("File");
fileMenu->addAction(quitAction);
menuBar()->addMenu("Edit");
menuBar()->addMenu("Window");
menuBar()->addMenu("Settings");
menuBar()->addMenu("Help");//Add status bar message
statusBar()->showMessage("Uploading file ...",3000);
//statusBar()->clearMessage();}
~~~
### QFileDialog
~~~cpp
#include "widget.h"
#include "ui_widget.h"
#include
#includeWidget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}Widget::~Widget()
{
delete ui;
}void Widget::on_pushButton_clicked()
{/*
//getExistingDirectory
QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
"/home",
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks);qDebug() << "Your chosed dir is : " << dir;
*//*
//getOpenFileName
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"/home",
tr("Images (*.png *.xpm *.jpg)"));qDebug() << "Your chosed file is : " << fileName;
*//*
//getOpenFileNames
QStringList files = QFileDialog::getOpenFileNames(
this,
"Select one or more files to open",
"/home",
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");
qDebug() << "Your chosed files are : " << files;
*///getSaveFileName
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
"/home/jana/untitled.png",
tr("Images (*.png *.xpm *.jpg)"));
qDebug() << "Your chosen filename is : " << fileName;}
~~~
### QFontDialog
~~~cpp
void Widget::on_chooseFontButton_clicked()
{
bool ok;
QFont font = QFontDialog::getFont(
&ok, QFont("Helvetica [Cronyx]", 10), this);
if (ok) {
ui->label->setFont(font);} else {
QMessageBox::information(this,"Message","User did not choose font");
}}
~~~
### QColorDialog
~~~cpp
#include "widget.h"
#include "ui_widget.h"
#include
#include
#includeWidget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->label->setAutoFillBackground(true);
}Widget::~Widget()
{
delete ui;
}void Widget::on_textColorButton_clicked()
{
QPalette palette = ui->label->palette();QColor color = palette.color(QPalette::WindowText);
QColor chosenColor = QColorDialog::getColor(color,this,"Choose text color");
if(chosenColor.isValid())
{
palette.setColor(QPalette::WindowText,chosenColor);
ui->label->setPalette(palette);
qDebug() << "User choose a valid color";
}else
{
qDebug() << "User choose a invalid color";
}}
void Widget::on_backgroundButton_clicked()
{QPalette palette = ui->label->palette();
QColor color = palette.color(QPalette::Window);
QColor chosenColor = QColorDialog::getColor(color,this,"Choose text color");
if(chosenColor.isValid())
{
palette.setColor(QPalette::Window,chosenColor);
ui->label->setPalette(palette);
qDebug() << "User choose a valid color";
}else
{
qDebug() << "User choose a invalid color";
}
}void Widget::on_fontButton_clicked()
{
bool ok;
QFont font = QFontDialog::getFont(
&ok, QFont("Helvetica [Cronyx]", 10), this);
if (ok) {
ui->label->setFont(font);
} else {}
}
~~~
### QInputDialog
~~~cpp
#include "widget.h"
#include "ui_widget.h"
#include
#includeWidget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}Widget::~Widget()
{
delete ui;
}void Widget::on_pushButton_clicked()
{/*
bool ok;
double d = QInputDialog::getDouble(this, tr("QInputDialog::getDouble()"),
tr("Amount:"), 37.56, -10000, 10000, 2, &ok);
if (ok)
{
qDebug() << "Your double value is " << QString::number(d);
}
*/QStringList items;
items << tr("Spring") << tr("Summer") << tr("Fall") << tr("Winter");bool ok;
QString item = QInputDialog::getItem(this, tr("QInputDialog::getItem()"),
tr("Season:"), items, 0, false, &ok);
if (ok && !item.isEmpty())
{
qDebug() << "Your chosen item is "<< item;
}}
~~~
### QPalette
~~~cpp
#include "widget.h"
#include "ui_widget.h"
#includeWidget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);//Retrieve the palette for the label
QPalette palette = ui->label->palette();//ui->label->setAutoFillBackground(true);
//Modify the palette with our changes
palette.setColor(QPalette::Window,Qt::blue);
palette.setColor(QPalette::WindowText,Qt::red);//Reset the palette to the widget
ui->label->setPalette(palette);
}Widget::~Widget()
{
delete ui;
}void Widget::on_activeButton_clicked()
{
QPalette::ColorGroup activeButtonColorGroup = ui->activeButton->palette().currentColorGroup();
QPalette::ColorGroup disabledButtonColorGroup = ui->disabledButton->palette().currentColorGroup();qDebug() << " Active button color group : " << activeButtonColorGroup;
qDebug() << " Disabled button color group : " <
#include
#includeQString readTextFile(QString path)
{
QFile file(path);if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream in(&file);
return in.readAll();
}return "";
}int main(int argc, char *argv[])
{
QApplication a(argc, argv);QString css = readTextFile(":/styles/style.css");
if( css.length() > 0)
{
a.setStyleSheet(css);
}Widget w;
w.show();return a.exec();
}
~~~### QSettings 设置
~~~cpp
// widget.h#ifndef WIDGET_H
#define WIDGET_H#include
#include
#include
#includenamespace Ui {
class Widget;
}class Widget : public QWidget
{
Q_OBJECTpublic:
explicit Widget(QWidget *parent = 0);
~Widget();private slots:
void on_button1_clicked();void on_button2_clicked();
void on_button3_clicked();
void on_button4_clicked();
void on_button5_clicked();
void on_button6_clicked();
void on_button7_clicked();
void on_button8_clicked();
void on_button9_clicked();
void on_loadPushButton_clicked();
void on_savePushButton_clicked();
private:
Ui::Widget *ui;
QList colorList;void saveColor( QString key, QColor color);
QColor loadColor(QString key);void setLoadedColor( QString key, int index, QPushButton * button);
};#endif // WIDGET_H
//widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include
#includeWidget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);for( int i =0 ; i < 9 ; i++)
{
colorList.append(Qt::black);
}
}Widget::~Widget()
{
delete ui;
}void Widget::on_button1_clicked()
{
QColor color = QColorDialog::getColor(colorList[0],this,"Choose Background Color");
if( color.isValid())
{
//Save the color in the list in memory
colorList[0] = color;//Set background color to the button
QString css = QString("background-color : %1").arg(color.name());
ui->button1->setStyleSheet(css);
}}
void Widget::on_button2_clicked()
{
QColor color = QColorDialog::getColor(colorList[1],this,"Choose Background Color");
if( color.isValid())
{
//Save the color in the list in memory
colorList[1] = color;//Set background color to the button
QString css = QString("background-color : %1").arg(color.name());
ui->button2->setStyleSheet(css);
}}
void Widget::on_button3_clicked()
{
QColor color = QColorDialog::getColor(colorList[2],this,"Choose Background Color");
if( color.isValid())
{
//Save the color in the list in memory
colorList[2] = color;//Set background color to the button
QString css = QString("background-color : %1").arg(color.name());
ui->button3->setStyleSheet(css);
}
}void Widget::on_button4_clicked()
{
QColor color = QColorDialog::getColor(colorList[3],this,"Choose Background Color");
if( color.isValid())
{
//Save the color in the list in memory
colorList[3] = color;//Set background color to the button
QString css = QString("background-color : %1").arg(color.name());
ui->button4->setStyleSheet(css);
}}
void Widget::on_button5_clicked()
{
QColor color = QColorDialog::getColor(colorList[4],this,"Choose Background Color");
if( color.isValid())
{
//Save the color in the list in memory
colorList[4] = color;//Set background color to the button
QString css = QString("background-color : %1").arg(color.name());
ui->button5->setStyleSheet(css);
}}
void Widget::on_button6_clicked()
{
QColor color = QColorDialog::getColor(colorList[5],this,"Choose Background Color");
if( color.isValid())
{
//Save the color in the list in memory
colorList[5] = color;//Set background color to the button
QString css = QString("background-color : %1").arg(color.name());
ui->button6->setStyleSheet(css);
}
}void Widget::on_button7_clicked()
{QColor color = QColorDialog::getColor(colorList[6],this,"Choose Background Color");
if( color.isValid())
{
//Save the color in the list in memory
colorList[6] = color;//Set background color to the button
QString css = QString("background-color : %1").arg(color.name());
ui->button7->setStyleSheet(css);
}
}void Widget::on_button8_clicked()
{QColor color = QColorDialog::getColor(colorList[7],this,"Choose Background Color");
if( color.isValid())
{
//Save the color in the list in memory
colorList[7] = color;//Set background color to the button
QString css = QString("background-color : %1").arg(color.name());
ui->button8->setStyleSheet(css);
}
}void Widget::on_button9_clicked()
{
QColor color = QColorDialog::getColor(colorList[8],this,"Choose Background Color");
if( color.isValid())
{
//Save the color in the list in memory
colorList[8] = color;//Set background color to the button
QString css = QString("background-color : %1").arg(color.name());
ui->button9->setStyleSheet(css);
}}
void Widget::on_loadPushButton_clicked()
{
setLoadedColor("button1",0,ui->button1);
setLoadedColor("button2",1,ui->button2);
setLoadedColor("button3",2,ui->button3);
setLoadedColor("button4",3,ui->button4);
setLoadedColor("button5",4,ui->button5);
setLoadedColor("button6",5,ui->button6);
setLoadedColor("button7",6,ui->button7);
setLoadedColor("button8",7,ui->button8);
setLoadedColor("button9",8,ui->button9);}
void Widget::on_savePushButton_clicked()
{
saveColor("button1",colorList[0]);
saveColor("button2",colorList[1]);
saveColor("button3",colorList[2]);
saveColor("button4",colorList[3]);
saveColor("button5",colorList[4]);
saveColor("button6",colorList[5]);
saveColor("button7",colorList[6]);
saveColor("button8",colorList[7]);
saveColor("button9",colorList[8]);}
void Widget::saveColor(QString key, QColor color)
{
int red = color.red();
int green = color.green();
int blue = color.blue();QSettings settings("Blikoon","SettingsDemo");
settings.beginGroup("ButtonColor");
settings.setValue(key + "r",red);
settings.setValue(key + "g",green);
settings.setValue(key + "b",blue);
settings.endGroup();}
QColor Widget::loadColor(QString key)
{
int red;
int green;
int blue;
QSettings settings("Blikoon","SettingsDemo");settings.beginGroup("ButtonColor");
red = settings.value(key+"r",QVariant(0)).toInt();
green = settings.value(key+"g",QVariant(0)).toInt();
blue = settings.value(key+"b",QVariant(0)).toInt();
settings.endGroup();return QColor(red,green,blue);
}void Widget::setLoadedColor(QString key, int index, QPushButton *button)
{
QColor color = loadColor(key);
colorList[index] = color;
QString css = QString("background-color : %1").arg(color.name());
button->setStyleSheet(css);
}~~~
### 文件读写
~~~cpp
#include "widget.h"
#include "ui_widget.h"
#include
#include
#include
#includeWidget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}Widget::~Widget()
{
delete ui;
}void Widget::on_writeButton_clicked()
{//Save the file to disk
QString filename = QFileDialog::getSaveFileName(this,"Save As");
if( filename.isEmpty())
return;QFile file(filename);
//Open the file
if( !file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
return;QTextStream out(&file);
out << ui->textEdit->toPlainText() << "\n";file.close();
}void Widget::on_readButton_clicked()
{QString fileContent;
//Save the file to disk
QString filename = QFileDialog::getOpenFileName(this,"Open File");if(filename.isEmpty())
return;QFile file(filename);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;QTextStream in(&file);
QString line = in.readLine();while(!line.isNull())
{
fileContent.append(line);
line = in.readLine();
}file.close();
ui->textEdit->clear();
ui->textEdit->setPlainText(fileContent);
}void Widget::on_selectFileButton_clicked()
{
QString filename = QFileDialog::getOpenFileName(this,"Choose File");
if( filename.isEmpty())
return;
ui->sourceLineEdit->setText(filename);}
void Widget::on_copyFileButton_clicked()
{
QString srcFileName = ui->sourceLineEdit->text();
QString destFileName = ui->destLineEdit->text();if( srcFileName.isEmpty() || destFileName.isEmpty())
return;QFile file(srcFileName);
if( file.copy(destFileName))
{
QMessageBox::information(this,"Success","Copy successful");
}else
{
QMessageBox::information(this,"Failure","Copy Failed");
}}
~~~### 目录 QFileDialog
~~~cpp
#include "widget.h"
#include "ui_widget.h"
#include
#includeWidget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}Widget::~Widget()
{
delete ui;
}void Widget::on_chooseDirButton_clicked()
{
QString filename = QFileDialog::getExistingDirectory(this,"Choose Folder");
if( filename.isEmpty())
return;
ui->lineEdit->setText(filename);}
void Widget::on_createDirButton_clicked()
{
//Create a dir if it doesn't exist already
QString dirPath = ui->lineEdit->text();
if( dirPath.isEmpty())
return;
QDir dir(dirPath);
if( !dir.exists())
{
//Create itif(dir.mkpath(dirPath))
{
QMessageBox::information(this,"Message","Directory created");
}
}else
{
QMessageBox::information(this,"Message","Directory already exists");
}}
void Widget::on_dirExistsButton_clicked()
{
//Check if a directory exists
QString dirPath = ui->lineEdit->text();
if( dirPath.isEmpty())
return;QDir dir(dirPath);
if( dir.exists())
{
QMessageBox::information(this,"Message","Directory exists");
}else
{
QMessageBox::information(this,"Message","Directory doesn't exist");
}}
void Widget::on_dirOrFileButton_clicked()
{
QFileInfo fileInfo(ui->listWidget->currentItem()->text());
if( fileInfo.isDir())
{
QMessageBox::information(this,"Message","This a Dir");
}
else if( fileInfo.isFile())
{
QMessageBox::information(this,"Message","This a File");
}else
{
QMessageBox::information(this,"Message","Something else");
}}
void Widget::on_folderContentsButton_clicked()
{
ui->listWidget->clear();QString dirPath = ui->lineEdit->text();
if( dirPath.isEmpty())
return;
QDir dir(dirPath);//Get the list of files and directories in the folder
QList fileList = dir.entryInfoList();
for( int i = 0 ; i < fileList.size() ; i++)
{
// QString prefix;
// if(fileList.at(i).isFile())
// {
// prefix = "FILE :";
// }
// if(fileList.at(i).isDir())
// {
// prefix = "DIRECTORY :";
// }ui->listWidget->addItem(fileList.at(i).absoluteFilePath());
}
}~~~