Qt笔记1

来源: 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);

 

QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk"));//设置中文字体编码

以后需要输出中文的时候 写成 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个属性

 

你可能感兴趣的:(Qt笔记1)