qt

这篇博客主要探讨了QT编程中的多个问题,包括子线程执行程序、设置QWidget背景图片、Qt事件处理流程、信号与槽机制的使用、线程间通信、QByteArray操作、文本文件读写、QTimer、事件过滤器、绘图设备类应用以及Qt中的错误处理等方面。还涉及了Qt中的数据结构、字符串处理、文件操作、内存管理和多线程等概念。
摘要由CSDN通过智能技术生成




313、qt为了处理复杂程序,防止该程序阻碍主线程,可以利用子线程执行该程序?
答、对。
314、问如何为qwidget窗口,设置自适应窗口大小的背景图片?
答、 QPalette palette; 
     QPixmap pixmap;
    pixmap.load(":/new/prefix1/8.jpg");
    this->setAutoFillBackground(true);
   palette.setBrush(QPalette::Window,QBrush(pixmap.scaled(this->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
   this->setPalette(palette);
315、raster?
答、光栅。
316、backends?
答、后端。
317、premade?
答、预先的。
318、实现改变widget窗体背景图片的代码?
答、QWidget *widget = new QWidget();
     widget->setAutoFillBackground(true);
     QPalette palette;
     QPixmap pixmap(":/Resources/Penguins.jpg");
     palette.setBrush(QPalette::Window, QBrush(pixmap));
     widget->setPalette(palette);
     widget->show();
319、问如何在qt中正确地睡眠?
答、QTimer t;
t.start();
while(t.elapsed()
320、问qt中事件过滤器的作用?
答、事件过滤器是控制过滤控件捕捉信号。例如设置了事件过滤器,鼠标点击事件,即可以被widget窗口捕捉,也能屏蔽widget窗口,使得信号被qpushbutton控件捕捉。当widget和button重叠时,就能屏蔽widget使得button捕捉到信号。
321、简述qt中事件处理的流程?
答、首先是qwidget,然后是event()函数,event函数再向下分发。
822、qt使用绘图设备类绘图只能在paintevent中和构造函数中进行?
答、对。但是如果绘图设备是this(本程序的窗口)就没必要。
823、问qt中的绘图设备指的是什么?
答、将图片画在什么地方,如果是当前程序运行后的窗口,绘图设备就是this,也可以通过QImage或QPixmap创建绘图设备对象。
824、如果一个qt中元素太多,有些效果不会出现?
答、对。
825、问qmessagebox采用静态函数的调用方式是模态的吗?
答、是的。如果想用非模态的,要用对象调用成员函数的方式编程。
826、问qt中如何使用qDebug打印中文?
答、QString str;
    str=str.fromLocal8Bit("模态对话框");
827、给出弹出文件对话框的代码?
答、QAction *p5=menu->addAction("文件对话框");
connect(p5,&QAction::triggered,
[=]()
{
QString path=QFileDialog::getOpenFileName(this,"open","../","source(*.cpp *.h);;Text(*.txt);;all(*.*)");

}
);


828、问弹出是否保存、帮助对话框的代码是什么?
答、QMessageBox::about(this,"about","关于qt");重点是about。
829、QT中非模态对话框实现的核心代码?
答、connect(p1,&QAction::triggered,[=]{
QDialog *p=new QDialog;
p->setAttribute(Qt::WA_DeleteOnClose);
p->show();
});


connect(p1,&QAction::triggered,[=]{
dlg.show();//dlg是主窗口的成员变量。
});
830、给出模态对话框的核心代码?
答、connect(p1,&QAction::triggered,[=]{
QDialog dlg;
dlg.exec();

});
831、所有控件的move函数的参考点坐标都是一样的?
答、不正确。主窗口相对于屏幕、子窗口相对于父窗口。
832、问
...
connect(b4,&QPushButton::released,[=]()
{
qDebug()<<"1111";
qDebug()<<a<<b;
a=11;
}
...
其中[=]、[&]的作用?如果released函数有参数,lamda表达式也必须要有参数吗?
答、=号是将外部所有变量、函数以值传递方式传递到lamda表达式的作用域中。=号使用是安全的。
[&]是将外部所有变量以引用方式传递到lamda表达式中。[&]的方式可能会出问题,是不安全的使用方式。
信号和槽函数的参数是一致的,而且会由信号向槽传递,lamda表达式是槽函数,也遵循这样的规则。
833、问connect(&subWin,SIGNAL(mySignal()),this,SLOT(ok()));
connect(&subWin,&SubWidget::mySignal,this,&MainWidget::dealsub);
?
哪种写法比较可靠?
答、第二种。第一种是QT4的语法,第二种是QT5的语法。第一种SIGNAL(mySignal())、以及SLOT(ok())会将函数名转换成字符串;编译器不会对函数名进行检查,即使写错了,也不会。只会在执行时出错。(注意联系834)
834、问qt中如果信号重载,如何知道connect时调用了哪个信号?
答、可采用方案:通过函数指针,例如:
void(SubWidget::*funSignal)()=&SubWidget::mySignal;
void(SubWidget::*testSignal)(int,QString)=&SubWidget::mySignal(int,QString);
835、问qt的信号函数需要定义吗?调用qt的信号函数的代码?
答、不需要。emit。
836、问qt的信号和槽函数有相同的参数吗?
答、有。
837、问qt中信号和槽有返回值吗?
答、没有。
838、问qt的QApplication app(argc,argv);中app是什么?
答、应用程序类的对象。
839、问qt中的能使用信号和槽的类中存在connect函数,该函数是信号和槽,但是通信时客户端也要使用connect连接,如果要在这样的类的成员函数中使用connect函数进行连接通信,如何解决冲突问题?
答、通过使用::connect,来避免在类的成员函数中使用信号和槽的connect函数,转而使用外作用域的connect进行通信连接。
840、问getsockname函数的作用?
答、获得本机的端口号和ip地址。
841、问信号和槽在主线程和子线程中的作用?
答、信号和槽机制可以将子线程的数据传给主线程。
842、QT中如果对象属于主进程,则该对象所属的所有槽函数都在主进程执行?
答、对。
843、对于像QT库等已经安装面向对象的方式创建了很多类、接口,如何快速理解这些类、接口?
答、参照这个类和接口所模仿的现实世界的对象和方法,通过现实世界已有的,来理解这些类和接口。
其次,如果是类、对象,则这些类、对象就是与现实世界相对应的对象的信息。
844、问QT有没有除去字符串空格的函数?
答、有。
845、两个字节的数据能不能造成文本中有空格现象?
答、能。
846、问
ASSERT: "uint(i) < uint(size())" in file D:/QTinstall/5.8/mingw53_32/include/QtCore/qbytearray.h, line 476
Debugging has finished
在QT中是什么错误?
答、用下标访问容器数据时,容器数据访问越界,例如QByteArray a;
a.size(3);
a.at(4);//此处会报错。
847、问QByteArray中用remove(i,1),删除指定下标字符后,i下标字符是什么?insert(i,"@")函数是在下标i处前插还是后插?
答、全部往左移(由remove内功能实现),注意删除以后容器size()是改变的。前插。
848、问文本文件中两个字符之间的空白空间都是由空格符造成的吗?
答、不是,是由\r、\t、space字符造成。
849、qDebug()如何打印不同进制的信息?
答、首先在头文件中包含#include <QDebug>


在需要使用的地方插入:


         qDebug("intensity:%d",intensity[0][2]); (%d表示整数)


输出结果:


intensity:195


 
注:
%a,%A 读入一个浮点值(仅C99有效)    
%c 读入一个字符    
%d 读入十进制整数    
%i 读入十进制,八进制,十六进制整数    
%o 读入八进制整数    
%x,%X 读入十六进制整数   
%s 读入一个字符串,遇空格、制表符或换行符结束。    
%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。    
%p 读入一个指针    
%u 读入一个无符号十进制整数   
%n 至此已读入值的等价字符数    
%[] 扫描字符集合    
%% 读%符号
850、Qt中qtimer文件中有一个可以使得停顿指定时间再执行函数的程序?
答、SingleShot
860、问qt程序存储的目录可以是中文吗?
答、不能。
861、问
D:\qt_code\CHESSDIYAGAIN\board.cpp:221: error: invalid use of incomplete type 'class QMouseEvent'
     QPoint p=ev->pos();//鑾峰緱榧犳爣鐐瑰嚮浣嶇疆鐨勫潗鏍
                ^
错误出现原因?
答、没有添加QMouseEvent作为头文件。
862、为了避免上次使用的画笔或画刷影响其它图形的绘制,应该采取什么方案?
答、每次绘制前都指定画刷和画笔。
863、问如何知道QString类型变量的某个字符?获得的字符又怎样转换成字符串呢?
答、QChar ch=text.at(index);
其中index是下标。
QString(ch);(创建匿名对象)
8
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值