基础知识
输出函数
可以使用 qlogging.h 中的qInfo ,也可以使用 QDebug 中的qDebug。
例子:

#include "mainwindow.h" #include "ui_mainwindow.h" #include "qlogging.h" #include "QDebug" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); qInfo()<<"hello QT 1"; qDebug()<<"hello QT 2"; } MainWindow::~MainWindow() { delete ui; }
定时器
使用QTimer,
三步骤: 1,创建QTimer 2, connect 信号槽, 3 timer.start(dura)
例子:

#include "mainwindow.h" #include "ui_mainwindow.h" #include "QDebug" #include "QTimer" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); timer = new QTimer(); connect(timer,&QTimer::timeout,this,&MainWindow::print); timer->start(1000); connect(ui->pushButton,&QPushButton::clicked,this,&MainWindow::print); } MainWindow::~MainWindow() { delete ui; } void MainWindow::print() { qDebug()<< "size "<<size(); }
Qt使用 MSVC编译器 中文乱码问题
一,使用Qt creator
在Qt Creator中使用msvc的编译器
两个问题:1,编译失败 2 运行时乱码
1,编译时失败的原因是因为creator 创建文件是utf8 不带bom,但是 msvc是微软的,使用utf8要带bom,所以编译失败。
2,运行时乱码的解决方法是 在当前的文件头加上 #pragma execution_character_set("utf-8")
https://blog.csdn.net/u013001137/article/details/103934813
二,使用VS
VS默认创建的文件是utf8无bom,写中文会导致文件编码改变,和第一种情况一样,保证文件编码为utf8-bom,然后使用#pragma execution_character_set("utf-8")
可以下载VS插件:force utf8(with bom)
总结就是 使用msvc编译器要保证 文件编码为utf8-bom,然后在文件头加上 #pragma execution_character_set("utf-8")
QT改变QComboBox Item的间距
class PopupItemDelegate : public QStyledItemDelegate { public: using QStyledItemDelegate::QStyledItemDelegate; QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { QSize s = QStyledItemDelegate::sizeHint(option, index); s.setHeight(20); return s; } }; // 方法一 //QListView *fontSizeView = new QListView(ui.comboBox); //ui.comboBox->setView(fontSizeView); // 方法二 ui.comboBox->view()->setItemDelegate(new PopupItemDelegate(ui.comboBox)); ui.comboBox->addItems({ "一号","二号","三号","四号","五号","六号","七号" });