Qt Question List

来源:互联网 发布:破壁机原理 知乎 编辑:程序博客网 时间:2024/06/06 09:17
  1. 自动布局管理是否是全局相关的。意味着子容器可能改变整个父容器树的各种性质? 比如一个按钮的大小改变一个容器高度,而高度通过容器耦合到容器内的所有控件大小和位置,同时耦合到容器周围的空间的位置,耦合四散开来。 、 一个简单粗暴的方法是听命于父不顾子,由上一级指定尺寸。、然而QT里布局器一般没法指定尺寸,只能指定margin。显然是由容器中的控件尺寸偏好改变的容器尺寸,进而与父尺寸共同决定了容器。 故有此问
中文乱码问题
Qt4
在已经使用Utf-8编码的情况下,源代码中的中文受到良好支持。当源码中的中文向QString赋值时,传递过程以Byte字节进行,QString内部将其解释为ascii编码,并转为unicode(utf16)储存,从而导致乱码。解决方法是使用QTectCodec::fromUtf8()构造正确编码的字符串。或者用
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));QTextStream in(&inputFile);in.setCodec(QTextCodec::codecForName("UTF-8"));
手动设定编码。
也可以用Tr()后跟英文字符串,然后用Qt Linguist翻译成资源文件,然后加载
Qt5
内部已改用UTF8,只要源代码和编译器都使用UTF8,那么就不用修改任何东西。
对于VS来说,在源文件开头加入
#pragma execution_character_set("utf-8")

即可

将数字转为字符串如何生成前导零?
使用QString("%1").arg(num, width, 10, QLatin1Char('0'));


如何给主窗口的消息队列添加“重绘”事件?
使用postEvent

信号槽是线程安全的吗?


如何跨越线程传递信号?
需要写消息循环
如何使用Qt默认的线程池?
使用QThreadPool::globalInstance()获得,
class HelloWorldTask : public QRunnable{    void run(){qDebug() << "Hello world from thread" <<Thread::currentThread();}}HelloWorldTask *hello = new HelloWorldTask();// QThreadPool takes ownership and deletes 'hello' automaticallyQThreadPool::globalInstance()->start(hello);
使用QGraphicsScene绘制大量2D图形的实际方法
比如需要一个视频显示窗口和一个进度条 可以继承QWidget
    videoItem = new QGraphicsVideoItem;    videoItem->setSize(QSizeF(640, 480));    QGraphicsScene *scene = new QGraphicsScene(this);    QGraphicsView *graphicsView = new QGraphicsView(scene);    scene->addItem(videoItem);    QBoxLayout *layout = new QVBoxLayout;    layout->addWidget(graphicsView);    layout->addWidget(rotateSlider);    setLayout(layout);

这里的好处是可以通过videoItem->setTransform(QTransform().translate(x, y).rotate(angle).translate(-x, -y));控制视频画面的旋转

0 0
原创粉丝点击