Qt入门笔记1

来源:互联网 发布:php文件缓存 编辑:程序博客网 时间:2024/04/30 05:45

文章目录:

1,QPushButton的使用:

 设置按钮背景色
ui->pushButton->setStyleSheet("background-color:green");
  设置按钮字体颜色
ui->pushButton->setStyleSheet("color:red");
ui->pushButton->setStyleSheet("QPushButton{font:bold 16px;color:red}");
  设置按钮背景图片
ui->pushButton->setIconSize(QSize(ui->pushButton->width(),ui->pushButton->height())); 
ui->pushButton->setIcon(QIcon(QPixmap(":/file/image/map.png")));

2,QLineEdit的使用

 设置值
ui->lineEdit->setText("hello");
获取值
qDebug() << ui->lineEdit->text();
设置密码模式
ui->lineEdit->setEchoMode(QLineEdit::Password);
输入的密码自动变成圆形图案
 ui->lineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);
输入的密码在失焦后变成圆形图案
ui->lineEdit->setPlaceholderText("input text:"); 提示输入
ui->lineEdit->setGeometry(50,50,100,100);  //设置位置大小

3,QTextEdit的使用

 设置值
ui->textEdit->setText("hello");
ui->textEdit->append(“hello”);  //追加
  获取值
qDebug() << ui->textEdit->toPlainText();

4,RadioButton的使用

选中
ui->radioButton->setCheckable(true);
ui->radioButton->setChecked(true);
 取消选中
ui->radioButton->setCheckable(false);
Radio button特性是多个只能选中一个

5,CheckBox的使用

 选中
ui->checkBox->setCheckable(true); 
ui->checkBox->setChecked(true); 
ui->checkBox_2->setChecked(true);
取消选中
ui->checkBox->setChecked(false);
 查询选中状态
qDebug() << ui->checkBox_2->isChecked();
Check Box特性是同时可以选中多个

6,TableWidget的使用

设置表格行列数
ui->tableWidget->setColumnCount(4); 
ui->tableWidget->setRowCount(3);
 往表格中添加元素
QTableWidgetItem *itm = new QTableWidgetItem(tr("a")); 
ui->tableWidget->setItem(1,1,itm);
itm->setTextAlignment(Qt::AlignLeft);
QLabel *label = new QLabel();
 label->setPixmap(QPixmap(":/file/image/map.png").scaled(40,50)); ui->tableWidget->setCellWidget(0,0,label);

7,QComboBox的使用

 QComboBox *box = new QComboBox(); 
box->addItem("male");
box->addItem("female"); 
ui->tableWidget->setCellWidget(0,2,box);

 获取条目值
qDebug() << box->currentText();
qDebug() << box->itemText(1);

8,QDataTime的使用

QDateTimeEdit *time = new QDateTimeEdit(); 
time->setDateTime(QDateTime::currentDateTime()); 
time->setDisplayFormat("dd/M/yyyy"); 
time->setCalendarPopup(true); //鼠标点上去,自动弹出日历
ui->tableWidget->setCellWidget(2,0,time);

9,Spin Box的使用

 创建、设置范围、设置步进值
ui->spinBox->setRange(1,100); 
ui->spinBox->setSingleStep(10); 
ui->spinBox->setValue(20);
 获取当前值
qDebug() << ui->spinBox->value();

10,LCD Number的使用

 设置显示数值位数、设置值、设置显示模式
ui->lcdNumber->setDigitCount(10); 
ui->lcdNumber->setHexMode(); 
ui->lcdNumber->display(1000); 

11,Progress Bar的使用

  设置范围、设置显示进度值
 ui->progressBar->setRange(1,100); 
 ui->progressBar->setValue(60);

12,Label的使用

 创建、设置背景色、设置标签文字、获取标签
ui->label->setStyleSheet("background-color:red"); 
ui->label->setText("hello"); 
qDebug() << ui->label->text();

13,QTime时钟类的使用

A QTime object contains a clock time, i.e. the number of hours, minutes, seconds, and milliseconds since midnight 
QTime time = QTime::currentTime(); 
qDebug() << time.hour(); 
QString text = time.toString("hh:mm"); 
qDebug() << text;

14,QToolBox工具盒类的使用

 QToolBox, QToolButton 
ui->toolButton->setText("小明"); 
ui->toolButton->setIcon(QPixmap(":/file/images/1.png"));
ui->toolButton->setIconSize(QPixmap(":/file/images/1.png").size()); 
ui->toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); 
ui->toolButton->setAutoRaise(true); 


15,QPalette调色板类

  例: 设置背景图片
setAutoFillBackground(true); 
QPalette pal;
pal.setBrush(QPalette::Background,QBrush(QPixmap(":/1.jpg"))); 
setPalette(pal);


使用样式表(setStyleSheet函数)比调色板更加可靠

16,分割窗口Qsplitter类


split = new QSplitter(); 
edit1 = new QTextEdit(); 
edit2 = new QTextEdit(); 
edit3 = new QTextEdit();
split->addWidget(edit1);
split->addWidget(edit2);
split->addWidget(edit3);
split->setWindowTitle("split window");
split->show();

19,QListWidget类的使用


17,基本的布局类:

(1)水平布局

btn1 = new QPushButton(tr("C")); 
btn2 = new QPushButton(tr("C++"));
  btn3 = new QPushButton(tr("Java")); QHBoxLayout *layout = new QHBoxLayout(); 
layout->addWidget(btn1); 
layout->addWidget(btn2); 
layout->addWidget(btn3); setLayout(layout);


(2)垂直布局
btn1 = new QPushButton(tr("C")); 
btn2 = new QPushButton(tr("C++"));
  btn3 = new QPushButton(tr("Java")); QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(btn1); 
layout->addWidget(btn2); 
layout->addWidget(btn3); setLayout(layout);


(3)栅格布局
lab1 = new QLabel(tr("姓名")); 
lab2 = new QLabel(tr("性别")); 
line1 = new QLineEdit();
box = new QComboBox(); 
box->addItem("男"); 
box->addItem("女"); 
lab3 = new QLabel(tr("备注:以上信息请认真填写"));
  lab4 = new QLabel(tr("个人简介")); 
edit = new QTextEdit(); 
QGridLayout *layout = new QGridLayout(); 
layout->addWidget(lab1, 0, 0);
layout->addWidget(line1, 0, 1);
layout->addWidget(lab2, 1, 0); 
layout->addWidget(box, 1, 1);
layout->addWidget(lab4, 2, 0);
layout->addWidget(edit, 2, 1); layout->addWidget(lab3, 3, 0, 1, 2);
  setLayout(layout);


18,标准文件对话框

  QFileDialog
QString s = QFileDialog::getOpenFileName
(this, "open file dialog", "/", 
"C++ files (*.cpp);;C files (*.c);;Head files (*.h);;all files(*.*)");
ui->lineEdit->setText(s);

19,标准颜色对话框

 QColorDialog
QColor color = QColorDialog::getColor (Qt::blue); if(color.isValid()) 

ui->frame->setAutoFillBackground(true); 
ui->frame->setPalette(QPalette(color)); 
}

20,标准字体对话框

QFontDialog
bool ok;                  
QFont font = QFontDialog::getFont( &ok );      
if( ok )     
{    
fontLineEdit->setFont( font );    
}

21,标准输入对话框

QInputDialog
bool ok; 
QString name = QInputDialog::getText(this, tr("User Name"), tr("Please input new name:"), QLineEdit::Normal, ui->nameLabel->text(),&ok);
if(ok && !name.isEmpty()) 
ui->nameLabel->setText(name);
QStringList list; 
list << tr("male") << tr("female"); 
bool ok; 
QString sex = QInputDialog::getItem(this,tr(“Sex”), tr(“Please selectsex:”),list,0,false,&ok);        //false参数表示对list不能作修改
if (ok) 
ui->nameLabel->setText(sex);

22,消息对话框

QMessageBox
switch(QMessageBox::question(this,"Question",tr("It's end of document,search from begin?"),
    QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok))
   {
  case QMessageBox::Ok:
    label->setText(" Question button / Ok ");
    break;
    case QMessageBox::Cancel:
    label->setText(" Question button / Cancel ");
    break;
    default:
    break;
    }


QMessageBox::information(this,"Information",tr("anything you want tell user"));


 switch(QMessageBox::warning(this,"Warning",tr("Save changes to document?"),
    QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save))
    {
    case QMessageBox::Save:
    label->setText(" Warning button / Save ");
    break;
    case QMessageBox::Discard:
    label->setText(" Warning button / Discard ");
    break;
    case QMessageBox::Cancel:
    label->setText(" Warning button / Cancel ");
    break;
    default:
    break;
    }


23,打开文件操作


24,保存文件代码


25,二维图形

  Qt的二维图形引擎是基于Qpainter类,QPainter既可以绘制几何形状(点、线、矩形、椭圆、弧形、多边形等),也可以绘制像素映射、图像、文字
  重新实现QWidget::paintEvent()可用于定制窗口部件
  使用Qpainter的draw函数,可以绘制各种各样的形状,绘制的效果取决于Qpainter的设置。三个主要的设置是画笔、画刷和字体


利用Qpainter绘制各种图形

画笔QPen类
The QPen class defines how a QPainter should draw lines and outlines of shapes。
A pen has a style(), width(), brush(), capStyle() and joinStyle().


画刷类QBrush
The QBrush class defines the fill pattern of shapes drawn by QPainter.
A brush has a style, a color, a gradient and a texture.


重写paintEvent函数
当调用update函数时,paintEvent函数会被自动调用

oid Dialog::paintEvent(QPaintEvent *)
 { 
QPainter painter(this);
painter.setPen(Qt::blue); 
painter.setFont(QFont("Arial", 30));
  painter.drawText(rect(), Qt::AlignCenter, "Qt");painter.drawLine(110,20,30,40);painter.drawPixmap(45,69,QPixmap(":/file/image/4.png"));
 }




26,背景图片设置


27,打开文件

  Qfile  open方法


读写文本文件

文件读写一般通过QTextStream (文本方式)或者QDataStream(二进制方式)进行
写文件
QFile file("test.txt"); 
/*如果文件不存在,会自动创建*/ 
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) 
{
QTextStream out(&file); 
out << "hello world" << endl << "nihao" << endl;
  }
else 
{
QMessageBox::information(this, "msg", "file not found");
}

使用QDataStream进行文件读写


博文索引  持续更新中。。。


原创粉丝点击