一:常用设置
1、获取显示器参数
QRect desktopRect;
desktopRect = QApplication::desktop()->availableGeometry();
qDebug("DesktopView Rect(%d, %d, %d, %d)", desktopRect.x(), desktopRect.y(),
desktopRect.width(), desktopRect.height());
2、设置控件位置大小
this->setGeometry(x, y, width, height);
3、设置控件边角弧度及其颜色
Label->setStyleSheet("border-radius:20px; color:black; background-color:rgba(100, 100, 100, 10%)");
4、设置字体,对齐
QFont font;
font.setPixelSize(15);
Label->setFont(font);
Label->setAlignment(Qt::AlignTop);
二:控件
1、QListWidget
添加对象:
listwidget->addItem(new QListWidgetItem(QIcon(QObject::tr(":/res/demo.png")), QObject::tr("Welcome Using")));
操作具体对象:
listwidget->item(index);
2、QComboBox
comboBox->addItems(QStringList list);
三:文件
1、读取文件内容
QFile file(path);
QTextStream infoInput(&file);
QString lineStr;
while (!infoInput.atEnd()) {
lineStr = infoInput.readLine();
}
2、对话框中选择文件
fileDialog = new QFileDialog(this);
fileDialog->setWindowTitle(tr("打开文件"));
fileDialog->setDirectory(".");
fileDialog->setNameFilter(tr("*"));
fileDialog->setFileMode(QFileDialog::ExistingFiles);
fileDialog->setViewMode(QFileDialog::Detail);
QStringList fileNames;
if (fileDialog->exec()) {
fileNames = fileDialog->selectedFiles();
}
for (auto path : fileNames){
qDebug() << path << endl;
}
3、修改文件内容
QString strall;
QString lineStr;
QString newStr;
QFile readfile(saveFilePath);
if(!readfile.open(QIODevice::ReadOnly)) {
QMessageBox::warning(this, "save files", "save files failed", QMessageBox::Yes);
return;
}
QTextStream stream(&readfile);
while (!stream.atEnd()) {
lineStr = stream.readLine();
lineStr.replace(0, lineStr.length(), newStr);
strall = strall + lineStr + '\n';
}
readfile.close();
QFile writefile(saveFilePath);
if(!writefile.open(QIODevice::WriteOnly)) {
QMessageBox::warning(this, "save files", "save files failed", QMessageBox::Yes);
return;
}
QTextStream wrtstream(&writefile);
wrtstream<<strall;
writefile.close();
4、通过对话框设置文件路径
pathStr = QFileDialog::getExistingDirectory(this, "choose src Directory", "/");
if (pathStr.isEmpty()){
return;
} else {
qDebug()<<pathStr;
}
四:信号与槽
1、通用按键类
.h:
public slots:
void QPushButton_Slot();
.cpp:
connect(QPushButton button, SIGNAL(clicked()), this, SLOT(QPushButton_Slot()));
2、信号触发槽函数
.h:
public slots:
void Function_Slot(int);
.cpp:
connect(this, SIGNAL(Function_Signal(int)), this, SLOT(Function_Slot(int)));
emit Function_Signal(int);
3、lambda表达式
.h:
public slots:
void QPushbutton_Slot(int);
.cpp:
connect(QPushButton button, &QPushButton::clicked, this, [=](){QPushButton_Slot(int);});
4、多个按键关联同一个槽函数
.h:
public slots:
void QPushButton_Slot();
.cpp:
for(i=0; i < n; i++){
Btn[i] = new QPushButton(QString::number(i));
Btn[i]->setObjectName(QString::number(i)); //设置名称
connect(Btn[i], SIGNAL(clicked()), this, SLOT(QPushButton_Slot()));
}
void QPushButton_Slot()
{
QString btnName = QObject::sender()->objectName();
int index = btnName.mid.toInt();
switch(index){}
}
五:Resources
1、设置图片qrc
1、this->setWindowIcon(QIcon(":/res/demo.png"));
2、QListWidget
listwidget->item(index)->setIcon(QIcon(":/res/demo.png"));
3、QLabel
3.1:
QPixmap pixmap(":res/demo.png");
label->setPixmap(pixmap);
3.2:
label->setPixmap(QPixmap(":/res/demo.png"));
后续根据工作经历会随时更新... ...