C plus plus Qt 04 - Signals and Slots - YouTube
//链接
connect(ui->horizontalScrollBar,SIGNAL(valueChanged(int)),ui->progressBar,SLOT(setValue(int)));
//取消链接
disconnect(ui->horizontalScrollBar,SIGNAL(valueChanged(int)),ui->progressBar,SLOT(setValue(int)));
C plus plus Qt 05 - Displaying Windows - YouTube
添加新文件 - Qt - Qt 设计师界面类(Qt Designer Form Class)- Dialog without Buttons - myDialog
然后 生成对应的文件mydialog.ui mydialog.h mydialog.cpp,可以修改ui等等
具体显示窗口的方法如下
#include "mydialog.h"
【方案1】
MyDialog mDialog;
//设为模态框为true,false时 都是模态框
mDialog.setModal(true);
mDialog.exec();
【方案2】
// .h文件定义成员变量
MyDialog *mDialog;
//.cpp 完善方法
mDialog=new MyDialog();
//模态框,非模态框生效
mDialog->setModal(true);
mDialog->show();
C plus plus Qt 06 - layouts, tabs and buddies
buddies 的作用
这个是用于设置QLabel的buddy的。在这个模式下,可以把QLabel跟其它控件连起来。QLabel可以设置快捷键,当按下快捷键后,窗口焦点就移动到与它连接扩控件上。
比如一个QLabel显示的是“用户名(&U)”,这表示Alt+U是快捷键。如果设置Buddy时把它跟一个输入框连接了,那么按了Alt+U的话,输入框就获得了焦点。
C plus plus Qt 07 - Basic Application and HTML Aware Widgets
新建项目 - 其他项目 - Empty qmake project
添加新文件 - C++ - c++ source file - main.cpp
代码清单
【.pro】
QT += widgets
SOURCES += \
main.cpp
【main.cpp】
#include <QApplication>
#include <QLabel>
int main(int argc,char *argv[]){
QApplication app(argc,argv);
QLabel *label = new QLabel("Hello world");
label->show();
return app.exec();
}
效果
【问题】
Q:Error QApplication: no such file or directory
A:qt5 中需要在.pro文件中添加 QT += widgets 参考
C plus plus Qt 08 - Horizontal and Vertical Layouts - YouTube
代码清单
新建项目 - 其他项目 - Empty qmake project
添加新文件 - C++ - c++ source file - main.cpp
【.pro】
QT += \
widgets
SOURCES += \
main.cpp
【main.cpp】
#include <QApplication>
#include <QPushButton>
//#include <QHBoxLayout>
#include <QVBoxLayout>
int main(int argc,char *argv[]){
QApplication app(argc,argv);
QWidget *window=new QWidget();
window->setWindowTitle("My App");
QPushButton *button1=new QPushButton("one");
QPushButton *button2=new QPushButton("two");
QPushButton *button3=new QPushButton("three");
// QHBoxLayout *hlayout=new QHBoxLayout;
// hlayout->addWidget(button1);
// hlayout->addWidget(button2);
// hlayout->addWidget(button3);
// window->setLayout(hlayout);
QVBoxLayout *vlayout=new QVBoxLayout;
vlayout->addWidget(button1);
vlayout->addWidget(button2);
vlayout->addWidget(button3);
window->setLayout(vlayout);
window->show();
return app.exec();
}
效果
C plus plus Qt 09 - QGridLayout - YouTube
新建项目 - 其他项目 - Empty qmake project
添加新文件 - C++ - c++ source file - main.cpp
【.pro】
QT += \
widgets
SOURCES += \
main.cpp
【main.cpp】
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QtCore>
int main(int argc,char *argv[]){
QApplication app(argc,argv);
QWidget *window=new QWidget();
window->setWindowTitle("My App");
QGridLayout *layout=new QGridLayout();
QLabel *label1=new QLabel("Name:");
QLineEdit *txtName1=new QLineEdit;
layout->addWidget(label1,0,0);
layout->addWidget(txtName1,0,1);
QLabel *label2=new QLabel("Name:");
QLineEdit *txtName2=new QLineEdit;
layout->addWidget(label2,1,0);
layout->addWidget(txtName2,1,1);
QPushButton *button =new QPushButton("OK");
layout->addWidget(button,2,0,1,2);
window->setLayout(layout);
window->show();
return app.exec();
}
效果
C plus plus Qt 10 - Splitters - YouTube
C plus plus Qt 11 - QDir - YouTube
#include <QDir>
【Demo1】
//检测是否存在
QDir mDir("/Users/zdy/aaa");
qDebug()<<mDir.exists();
【Demo2】
//遍历驱动器
QDir mDir;
foreach(QFileInfo mItem,mDir.drives()){
qDebug()<<mItem.absoluteFilePath();
}
【Demo3】
//创建文件
QDir mDir;
QString mPath="/Users/zdy/Desktop/ttt";
if(!mDir.exists(mPath)){
qDebug()<<"created";
mDir.mkpath(mPath);
}else{
qDebug()<<"already exists";
}
【Demo4】
// 遍历目录,并区分 目录 文件
QDir mDir("/Users/zdy/Desktop");
foreach (QFileInfo mItem, mDir.entryInfoList()) {
if(mItem.isDir()){
qDebug()<<"Dir "+mItem.absoluteFilePath();
}else if(mItem.isFile()){
qDebug()<<"File "+mItem.absoluteFilePath();
}
}
C plus plus Qt 12 - QFile - YouTube
【文件读写】
#include <QFile>
#include <QTextStream>
void Write(QString Filename){
QFile mFile(Filename);
if(!mFile.open(QFile::WriteOnly|QFile::Text)){
qDebug()<<"could not open file for writing";
return;
}
QTextStream out(&mFile);
out<<"Hello world";
mFile.flush();
mFile.close();
}
void Read(QString Filename){
QFile mFile(Filename);
if(!mFile.open(QFile::ReadOnly|QFile::Text)){
qDebug()<<"could not open file for reading";
return;
}
QTextStream in(&mFile);
QString mText =in.readAll();
qDebug()<<mText;
mFile.close();
}
QString mFilename="/Users/zdy/Desktop/m.txt";
Write(mFilename);
Read(mFilename);
C plus plus Qt 13 - Resource Files - YouTube
C plus plus Qt 14 - QLabel and QT Designer - YouTube
text 支持 html
<h1>Hello</h1><h2 style="color:red;background:#000">world</h2>
C plus plus Qt 15 - QPushButton - YouTube
【Demo1】
void Dialog::on_pushButton_clicked()
{
qDebug()<<"clicked";
}
void Dialog::on_pushButton_clicked(bool checked)
{
QString boolText = checked ? "true" : "false";
qDebug()<<"clicked "+ boolText;
}
void Dialog::on_pushButton_toggled(bool checked)
{
QString boolText = checked ? "true" : "false";
qDebug()<<"toggled "+boolText;
}
void Dialog::on_pushButton_pressed()
{
qDebug()<<"pressed";
}
void Dialog::on_pushButton_released()
{
qDebug()<<"released";
}
点击一次按钮之后,打印如下:
pressed
"toggled true"
released
"clicked true"
clicked
C plus plus Qt 17 - QCheckBox - YouTube
if(ui->checkBox->isChecked()){
qDebug()<<"checked";
}else{
qDebug()<<"not checked";
}
C plus plus Qt 18 - QRadioButton - YouTube
//成员变量
QButtonGroup *btnGroup;
//构造函数中分组
btnGroup=new QButtonGroup(this);
btnGroup->addButton(ui->radioButton);
btnGroup->addButton(ui->radioButton_2);
btnGroup->addButton(ui->radioButton_3);
//具体取值
switch(btnGroup->checkedId())
{
case 0:
qDebug() << "cats";
break;
case 1:
qDebug() << "dogs";
break;
case 2:
qDebug() << "rows";
break;
}
C plus plus Qt 19 - QComboBox - YouTube
for(int i=0; i<10; i++){
ui->comboBox->addItem(QString::number(i)+" item");
}
qDebug() << ui->comboBox->currentText();
qDebug() << ui->comboBox->currentIndex();
C plus plus Qt 20 - QListWidget - YouTube
for(int i=0; i<10; i++){
ui->listWidget->addItem(QString::number(i)+" item here");
}
QListWidgetItem *item = ui->listWidget->currentItem();
qDebug() << item->text();
item->setText("current");
item->setTextColor(Qt::red);
item->setBackgroundColor(Qt::black);
C plus plus Qt 21 - QTreeWidget - YouTube
ui->treeWidget->setColumnCount(2);
ui->treeWidget->setHeaderLabels(QStringList()<<"one"<<"two");
AddRoot("1 Hello","world");
AddRoot("2 Hello","world");
AddRoot("3 sHello","world");
void Dialog::AddRoot(QString name,QString description){
QTreeWidgetItem *item=new QTreeWidgetItem(ui->treeWidget);
item->setText(0,name);
item->setText(1,description);
ui->treeWidget->addTopLevelItem(item);
AddChild(item,"one","hello");
AddChild(item,"two","world");
}
void Dialog::AddChild(QTreeWidgetItem *parent,QString name,QString description){
QTreeWidgetItem *item=new QTreeWidgetItem(parent);
item->setText(0,name);
item->setText(1,description);
parent->addChild(item);
}
ui->treeWidget->currentItem()->setBackgroundColor(0,Qt::red);
ui->treeWidget->currentItem()->setBackgroundColor(1,Qt::blue);