QT-零碎笔记

C++ 类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

class Myclass{

}

class Mysubclass : public Myclass {

private:
int a;

public:
int b;
void setA(int x);
}

void Mysubclass::setA(int x) {
a = x;
}


void main() {
Mysubclass *s1;
s1 = new Mysubclass();
s1->setA(1);
}

习惯上类、变量、函数的定义写在头文件中, 而具体实现写在源文件中。

QT项目结构

main 为入口。 mainwindow为主窗口。 其他组件定义后在头文件中定义变量和成员函数, 在源文件中具体实现函数。 然后在mainwindow中使用。

当然也可以自定义窗口。

信号和槽机制

定义

1
2
private slots:
void pushButtonClick();

关联

connect(sender, signal, receiver, slot)

1
2
QPushButton * quitBtn = new QPushButton("关闭窗口",this);
connect(quitBtn,&QPushButton::clicked,this,&MyWidget::close);

其他

qDebug() << 来查看输出信息, 头文件 <QDebug>;

QPushButton

  • setText("pushButton")
  • setGeometry(10, 10, 100, 100) 前两个参数为左上角坐标, 后两个为宽和高。

样式

setStyleSheet("") 来设置样式。 里面的内容和一般css类似。

绘制

QPainter

画笔工具。

  • bool begin(QPaintDevice *)
  • bool end()
  • resetTransform()
  • translate(qreal dx, qreal dy)
  • rotate(qreal a)
  • drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule)
  • drawRect(int x, int y, int w, int h)
  • drawEllipse(int x, int y, int w, int h) 绘制椭圆, (x, y)为左上角坐标。

修改字体大小

1
2
3
QFont f = this->font();
f.setPointSize(11);
this->setFont(f);

计时器

QTimer

  • timeout(QPrivateSignal)
  • start(int msec)
  • connect(timer,&QTimer::timeout,this,&QWidgetSerialTx::sendData)

QBasicTimer

  • start(int msec, QObject *obj)

事件

  • virtual void paintEvent(QPaintEvent * event)
  • virtual void timerEvent(QTimerEvent * event)

其他

1

1
2
3
4
MainWindow w;

w.resize(800,480);
QWidget *centralWidget = new QWidget(&w);

定位父组件的参数为指针, 因此这里注意引用。

2

  • setText(const QString &)
  • QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss zzz");