依附于lambda表达式进行,可以直接调用静态函数,大致格式
connect(ui->action_new,&QAction::triggered,[=](){
//错误对话框
QMessageBox::critical(this,"提示","错误");
});
错误对话框:QMessageBox::critical(this,"提示","错误");
警告对话框:QMessageBox::warning(this,"warning","wrong");
信息对话框:QMessageBox::information(this,"提示","信息");
提问对话框:参数:1父亲,2对话框标题,3提示内容,4按键类型,5默认关联回车按键QMessageBox::question(this,"提示","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);
保存相应 *** 作:
if(QMessageBox::Save == QMessageBox::question(this,"提示","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel))
{
qDebug()<<"选择保存";
}
else
{
qDebug()<<"选择取消";
}
2.文件对话框
参数:1父亲,2标题,3默认打开路径,4过滤文件格式
返回值:选取的路径
connect(ui->action_new,&QAction::triggered,[=](){
QString str = QFileDialog::getOpenFileName(this,"打开文件","C:\Users569\Desktop",("*.txt"));
qDebug()<<str;
});
3.颜色对话框、字体对话框(略)
二、窗口布局
1.weghit 布局: 水平布局,垂直布局,栅格布局(类似表格)
2.利用d簧进行布局:fixed
在代码中实现对控件的修改=>objectname中找到名字=>代码进行修改
1.按钮组名称 | 功能 |
---|---|
pushbutton | 存放文字 |
toolbutton | 存放图片(图片+文字:toolbuttonstyle中进行修改;autoraise透明化处理) |
radiobutton | 单选按钮 |
groupbox | 分组控件 |
checkBox | 多选项按钮 |
与信号和槽相联系:
connect(ui->Button1,&QRadioButton::clicked,[=](){
qDebug()<<"1";
});
connect(ui->checkBox_S,&QCheckBox::stateChanged,[=](int state){
//state选中是2,未选中是0
if(state == 2)
{
qDebug()<<"选中";
}
else
{
qDebug()<<"取消";
}
});
运行结果:
向记事本中添加内容:
//申请字符串链表
QStringList a;
a<<"1111"<<"2222"<<"3333";
ui->listWidget->addItems(a);
3.treeweight控件
功能 | 语法 |
---|---|
设置水平头 | setHeaderLabels |
加载顶层结点 | addTopLevelItem |
追加子节点 | addChild |
//设置水平头
ui->treeWidget->setHeaderLabels(QStringList()<<"s"<<"u");
QTreeWidgetItem * item1 = new QTreeWidgetItem(QStringList()<<"一");
QTreeWidgetItem * item2 = new QTreeWidgetItem(QStringList()<<"二");
QTreeWidgetItem * item3 = new QTreeWidgetItem(QStringList()<<"三");
//加载顶层结点
ui->treeWidget->addTopLevelItem(item1);
ui->treeWidget->addTopLevelItem(item2);
ui->treeWidget->addTopLevelItem(item3);
//追加子节点
QTreeWidgetItem * it1 = new QTreeWidgetItem(QStringList()<<"sss:"<<"asdfg");
QTreeWidgetItem * it2 = new QTreeWidgetItem(QStringList()<<"vvv:"<<"asdfg");
item1->addChild(it1);
item1->addChild(it2);
运行结果:
设置列数setColumnCount
设置水平表头setHorizontalHeaderLabels
设置行数setRowCount
设置正文setItem
//设置列数
ui->tableWidget->setColumnCount(3);
//设置水平表头
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"一"<<"二"<<"三");
//设置行数
ui->tableWidget->setRowCount(5);
//设置正文
QStringList namelist1;
namelist1<<"aa"<<"bb"<<"cc"<<"dd"<<"ee";
QStringList namelist2;
namelist2<<"1"<<"0"<<"0"<<"1"<<"1";
QStringList namelist3;
namelist3<<"222"<<"333"<<"444"<<"555"<<"666";
for(int i=0;i<5;i++)
{
int col = 0;
ui->tableWidget->setItem(i, col++, new QTableWidgetItem(namelist1[i]));
ui->tableWidget->setItem(i, col++, new QTableWidgetItem(namelist2[i]));
ui->tableWidget->setItem(i, col, new QTableWidgetItem(namelist3.at(i)));
}
运行结果:
1.添加新文件:qt => 设计师界面类
2.在ui中合并控件
3.weight中使用自定义控件:拖拽一个weight控件=>右键=>提升=>把自定义文件名写入
4.实现功能:改变数字两者一起移动;设置一般值,获取值
xiaobujian.h
void setNum(int num);
int getNum();
xiaobujian.cpp
void xiaobujian::setNum(int num){
ui->spinBox->setValue(num / 2);
}
int xiaobujian::getNum(){
int n = ui->spinBox->value();
return n;
}
widget.cpp
xiaobujian::xiaobujian(QWidget *parent) :
QWidget(parent),
ui(new Ui::xiaobujian)
{
ui->setupUi(this);
//qspinbox移动qslider跟着移动
void(QSpinBox:: *p)(int)=&QSpinBox::valueChanged;
connect(ui->spinBox,p,ui->horizontalSlider,&QSlider::setValue);
//QSliderx移动QSpinBox跟着改变
connect(ui->horizontalSlider,&QSlider::sliderMoved,ui->spinBox,&QSpinBox::setValue);
}
void xiaobujian::setNum(int num){
ui->spinBox->setValue(num / 2);
}
int xiaobujian::getNum(){
int n = ui->spinBox->value();
return n;
}
});
运行结果:
1.鼠标进入void enterEvent(QEvent *event);
2.鼠标离开void leaveEvent(QEvent *event);
3.鼠标按下virtual void mousePressEvent(QMouseEvent *ev);
4.鼠标释放virtual void mouseReleaseEvent(QMouseEvent *ev);
5.鼠标移动virtual void mouseMoveEvent(QMouseEvent *ev);
自定义字符串
QString tmp = QString("x=%1 y=%2").arg(ev->x()).arg(ev->y());
判断鼠标左右键状态
点击和释放是瞬间的过程,而移动是持续的过程,对于移动状态左右键的判断要用&if(ev->buttons() & Qt::LeftButton)
,瞬间过程用==if(ev->button()==Qt::LeftButton)
设置鼠标追踪(鼠标不摁就可监听)
mylabl::mylabl(QWidget *parent) : QLabel(parent)
{
//设置鼠标追踪(鼠标不摁就可监听)
setMouseTracking(true);
}
应用举例:
mylabl::mylabl(QWidget *parent) : QLabel(parent)
{
//设置鼠标追踪(鼠标不摁就可监听)
//setMouseTracking(true);
}
void mylabl::enterEvent(QEvent *event){
qDebug()<<"in";
}
void mylabl::leaveEvent(QEvent *event){
qDebug()<<"out";
}
void mylabl::mousePressEvent(QMouseEvent *ev){
qDebug()<<"press";
}
void mylabl::mouseReleaseEvent(QMouseEvent *ev){
if(ev->button()==Qt::LeftButton){
qDebug()<<"left release";
}
}
void mylabl::mouseMoveEvent(QMouseEvent *ev){
//自定义字符串
//点击和释放是瞬间的过程,而移动是持续的过程,对于移动状态左右键的判断要用&
if(ev->buttons() & Qt::LeftButton){//实现只有左键按下才返回值
QString tmp = QString("x=%1 y=%2").arg(ev->x()).arg(ev->y());
qDebug()<<tmp;
}
}
运行结果:
注意:提升时基类的名称要保证对应
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)