发布日期:2025-10-13 15:25浏览次数:
昨儿个心血来潮想试试用QT给Linux整个简单APP玩玩,正好记录下全过程当个备忘录,折腾一趟可太有意思了。
先是蹬进咱们的Ubuntu终端,噼里啪敲安装命令。用惯了apt就靠它: sudo apt install qtcreator qtbase5-dev
装完顺手敲了个qmake -v看看版本,确认这顿饭家伙已经摆上桌了才安心。
打开QT Creator这玩意儿,点左上角的"文件" → "新建" → "QT Widgets应用",就跟开盲盒似的。项目名随手填了个TextEditDude,路径丢在文档里,编译器嘛系统自带的G++够用就行。
新建完就瞅见那个设计模式的图标(长得像个油漆刷子),点进去开整!先从左边控件箱薅了个Text Edit(大文本框)丢到窗口正中间,又拖了个Horizontal Layout(水平布局)压到文本框底下当底座。
接着往底座上塞家伙:
布局点一点那个绿色的垂直排列按钮,完事儿整个界面看着顺眼多了,不会乱跑变形。
切回编辑模式,对着主窗口空白处右键 → 转到槽,找到"退出"按钮的clicked()信号。 啪! Creator自动在源文件生成了个槽函数,往里塞一行简单粗暴的: this->close(); // 点退出直接关窗口
接着搞“清空”按钮:同样转到槽选clicked(),代码里写: ui->textEdit->clear(); // 清空文本框神器
重头戏是文件读写!
先给“打开”按钮写槽:
void MainWindow::on_openBtn_clicked()QString fileName = QFileDialog::getOpenFileName(this, "开个文本", ".", "文本文件 (.txt)");
if (*()) return;
QFile file(fileName);
if (!*(QIODevice::ReadOnly QIODevice::Text)) return;
ui->textEdit->setText(*());
“保存”按钮也差不多套路:
void MainWindow::on_saveBtn_clicked()QString fileName = QFileDialog::getSaveFileName(this, "存哪儿", ".", "文本文件 (.txt)");
if (*()) return;
QFile file(fileName);
if (!*(QIODevice::WriteOnly QIODevice::Text)) return;
*(ui->textEdit->toPlainText().toUtf8());
重点来了! 保存时忘记转成Utf8编码的话,中文直接变火星文,这个坑我踩得结结实实。
临门一脚:编译跑起来
点左下角绿色三角开跑!界面弹出来那瞬间真舒坦。测试流程走一波:
顺手点退出,窗口秒关,舒服!
坑位1: 刚开始按钮死活点不动,翻代码发现忘记在构造函数里挂载信号槽,手动补了一行connect才救活。后来发现Creator能自动挂,是我眼神不好没勾选。
坑位2: 文件保存成功但打开空白?折腾半小时发现文件操作权限没开够,QIODevice::WriteOnly后面漏了Text模式,补上才灵。
坑位3: 编译成品文件贼大(80MB+),搜了下发现要用linuxdeployqt打包瘦身。这活儿改天单独开一篇唠。
整完这个玩具APP,愈发觉得QT搞Linux桌面是真香。虽然踩坑疼,但解决问题的快感比喝冰可乐还爽!