来源: http://my.oschina.net/laopiao/blog/83916
1、treewidget 树形列表
2、使用布局管理器的步骤:1、摆控件(一组一组的摆放,放好一组就全选设定为一个局部布局);2、对几个要排在一起的控件全选之后右击选择布局方式,然后再调一下大小;3、这样一个一个的局部布局摆好之后,实现控件随窗口变化的最重要的一步就是单击主窗口,取消对控件的选择之后,右击主窗口,选择一个顶级的布局方式,这样就可以实现想要的效果了,但是这样做的一个不足就是位置和大小又会有点小乱,可能是我没找到具体调节设置的地方,继续查找中
注意的是一定要在最后,即各个局部布局都设定好后,才设定顶级布局,之前看有些人写的,有点害人,对初学者误导很多。
3、shadow build : 创建项目的时候勾选这个选项,就会生成两个文件夹,也就是debug会单独放到一个文件夹中,不勾选的话整个项目就一个文件夹,debug和release都在主文件夹内
4、Vertical 垂直布局
Horizontal 水平布局
5、例如我要在一个label上设置当前时间
QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间
QString str = time.toString("yyyy-MM-dd hh:mm:ss ddd"); //设置显示格式
label->setText(str);//在标签上显示时间
qt 获取系统时间显示出来
#include <qdatetime.h>
#include <qtimer.h>
QTimer *timer= new QTimer(this,"timer");
connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
timer->start(8000);
void ylform::showTime()
{
QDateTime datatime = QDateTime::currentDateTime();
int y=datatime.date().year();
int m=datatime.date().month();
int d=datatime.date().day();
QString strtime = datatime.time().toString();
time1->setText(strtime+" "+QString::number(y)+"/"+QString::number(m)+"/"+QString::number(d));
data1->setText(QString::number(y)+"/"+QString::number(m)+"/"+QString::number(d));
}
ui->label->setText(strTime+" "+QString::number(y)+"/"+QString::number(m)+"/"+QString::number(d));
6、Qt中计算一段程序的运行时间:
#include <QTime>
QTime tmpTime;
tmpTime.start();
qDebug() << tmpTime.elapsed() << "ms";
给Qt工程生成的可执行文件添加图标
1. 找一个ico文件,该名为适当的。如EXEICON.ico。
2. 手动创建一个对应的rc文件。如EXEICON.rc: IDI_ICON1 ICON DISCARDABLE "EXEICON.ico"
3. 将上面两个文件放在当前目录,把HdssMap.rc加入工程在中。重新生成即可。
给Qt窗体添加图标
在main函数中:
QApplication a(argc, argv);
a.setWindowIcon(QIcon(":/DataManager/Resources/statics.png"));
7、中文输出乱码的解决方法:a、在main.cpp头文件中添加 #include <QTextCodec>
b、在main函数调用中 加入
QApplication a(argc, argv);
以后需要输出中文的时候 写成 tr("中文你好");即可 比如
ui->textEdit->append(tr("pushbutton_3----时间"));
这样输出的就是正常的中文字符了
8、checkBox 选中状态判断,呵呵,自己想的,不知道大家怎么做
on_checkBox_clicked(){
if(ui->checkBox->checkState())
{
// 选中是state状态为真,未选中为false
}
}
9、可以将很多信号和单个的槽进行连接,也可以将单个的信号和多个的槽进行连接,甚至将一个信号和另一个信号进行连接,这时无论第一个信号什么时候发射,系统都将立刻发射第二个信号。
如果存在多个槽与某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个的执行,但是他们执行的顺序将会是随机的、不确定的,我们不能人为的指定那个先执行,那个后执行。
QObject::connect(sender,SIGNAL(signal),receiver,SLOT(slot));
比如:QObject::connect(pushButton,SIGNAL(clicked()),this,SLOT(dopushButton()));
10、类声明里,SIGNALS没有public、private、protected等属性,SLOTS则有这3个属性