#include "mainwindow.h"
#include "ui_mainwindow.h"
void startQTimer(MainWindow* parent);
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
translator = new QTranslator(this);
isChinese = true;
initListWidget();
initTableWidget();
initComboBox();
initSmallWidget();
initLabel();
// 启动定时器
timerId1 = startTimer(1000);
timerId2 = startTimer(2000);
startQTimer(this);
}
void MainWindow::changeEvent(QEvent *e) {
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
if (!isChinese && ui->comboBox->currentIndex() == 0) {
ui->selectLanguangeComboBox->setCurrentIndex(1);
}
break;
default:
break;
}
}
void MainWindow::on_selectLanguangeComboBox_activated(int index)
{
switch(index) {
// chinese
case 0:
translator->load(":/language/res/ListTableWidgetTest_CN.qm");
isChinese = true;
break;
// english
case 1:
translator->load(":/language/res/ListTableWidgetTest_EN.qm");
isChinese = false;
break;
default:
break;
}
qApp->installTranslator(translator);
ui->retranslateUi(this);
}
/**
* 2. override eventFilter
*
* @brief MainWindow::eventFilter
* @param object
* @param e
* @return
*/
bool MainWindow::eventFilter(QObject* object, QEvent* e) {
if (object == ui->label) {
// 拦截处理鼠标按下事件
if (e->type() == QEvent::MouseButtonPress) {
QMouseEvent* event = static_cast<QMouseEvent*>(e);
handleMousePressEvent(event, "eventFilter()");
return true;
}
}
return QMainWindow::eventFilter(object, e);
}
void MainWindow::initLabel() {
//1. install event filter
ui->label->installEventFilter(this);
}
void startQTimer(MainWindow* parent) {
QTimer* timer = new QTimer(parent);
parent->connect(timer, &QTimer::timeout, parent, [=](){
static int num = 1;
parent->getUi()->label_3->setText(QString::number(num++));
});
timer->start(500);
parent->connect(parent->getUi()->pauseButton, &QPushButton::clicked, parent, [=](){
timer->stop();
});
parent->connect(parent->getUi()->resumeButton, &QPushButton::clicked, parent, [=](){
timer->start(500);
});
}
void MainWindow::timerEvent(QTimerEvent* event) {
if (event ->timerId() == timerId1) {
onTimer1Event(event);
} else if (event->timerId() == timerId2) {
onTimer2Event(event);
}
}
Ui::MainWindow *MainWindow::getUi() const
{
return ui;
}
void MainWindow::onTimer1Event(QTimerEvent* event) {
static int num = 1;
ui->label->setText(QString::number(num++));
}
void MainWindow::onTimer2Event(QTimerEvent* event) {
static int num = 1;
ui->label_2->setText(QString::number(num++));
}
void MainWindow::initSmallWidget(){
connect(ui->getValueButton, &QPushButton::clicked, this, [=](){
qDebug() << ui->widget->getValue();
});
connect(ui->setHalfButton, &QPushButton::clicked, this, [=](){
ui->widget->setValue(50);
});
}
void MainWindow::initComboBox() {
ui->comboBox->addItem("Benz");
ui->comboBox->addItem("BMW");
ui->comboBox->addItem("125 Moto");
connect(ui->selectCarPushButton, &QPushButton::clicked, this, [=](){
// ui->comboBox->setCurrentIndex(2);
ui->comboBox->setCurrentText("BMW");
});
}
void MainWindow::initTableWidget() {
ui->tableWidget->setColumnCount(3);
ui->tableWidget->setRowCount(5);
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"Name" << "Sex" << "Age");
QStringList nameList;
nameList << "yase" << "zhoayun" << "zhangfei" << "guanyu" << "huamulan";
QList<QString> sexList;
sexList<< "Male" << "Male" << "Male" << "Male" << "Female";
for (int i = 0; i < 5; i++) {
int columnIndex = 0;
ui->tableWidget->setItem(i, columnIndex++, new QTableWidgetItem(nameList[i]));
ui->tableWidget->setItem(i, columnIndex++, new QTableWidgetItem(sexList[i]));
ui->tableWidget->setItem(i, columnIndex++, new QTableWidgetItem(QString::number(i)));
}
}
void MainWindow::initListWidget() {
// QListWidgetItem* item = new QListWidgetItem("Hello hello, jin gou bei, jin goubei");
// item->setTextAlignment(Qt::AlignHCenter);
// ui->listWidget->addItem(item);
QStringList list;
list << "Hello hello, jin gou bei, jin goubei" << "Hello hello, jin gou bei, jin goubei"
<< "Hello hello, jin gou bei, jin goubei" << "Hello hello, jin gou bei, jin goubei";
ui->listWidget->addItems(list);
}
MainWindow::~MainWindow()
{
delete ui;
}
没有合适的资源?快使用搜索试试~ 我知道了~
QT学习Demo例程2
共16个文件
cpp:4个
h:3个
ui:2个
需积分: 0 0 下载量 72 浏览量
2023-11-02
21:05:45
上传
评论
收藏 11KB RAR 举报
温馨提示
QT学习Demo例程2QT学习Demo例程2QT学习Demo例程2QT学习Demo例程2
资源推荐
资源详情
资源评论
收起资源包目录
ListTableWidgetTest.rar (16个子文件)
ListTableWidgetTest
mainwindow.h 998B
ListTableWidgetTest.pro.user 22KB
mylabel.cpp 2KB
mainwindow.cpp 5KB
res
ListTableWidgetTest_EN.ts 3KB
ListTableWidgetTest_EN.qm 910B
ListTableWidgetTest_CN.qm 745B
ListTableWidgetTest_CN.ts 3KB
smallwidget.ui 725B
main.cpp 183B
ListTableWidgetTest.pro 1KB
mainwindow.ui 6KB
mylabel.h 848B
smallwidget.cpp 819B
res.qrc 277B
smallwidget.h 405B
共 16 条
- 1
资源评论
kaikai_sk
- 粉丝: 258
- 资源: 46
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功