環境如下
創建工程
打開Qt 7.0.0()
下載安裝環境的自行百度吧
我們點擊文件-> New ->然后再下圖中選擇Qt
在如下界面中,名字是你的工程名,路徑是工程所在路徑,會在工程所在路徑下面創建一個文件夾
選擇build ,我這里無腦選擇Qmake
一切都無腦下一步,不細說了這里直接貼圖
加了一個中文的 不確定是干嘛的
選擇kit ,我的版本可能新一點
創建之后的文件夾路徑如下,我這是開了兩個工程,但是文件夾都是創建的基本工程,沒有自行新加文件夾或者文件
app界面編輯
雙擊打開ui文件,看到前端界面
前端界面如下
添加一個按鍵()和一個文本框()
添加方法為拖拽
這個時候點擊運行 下面的綠色運行可以看見有界面彈出了,通過點擊debug窗口修改構建配置
運行之后界面如下:
處理程序添加
回到剛才的編輯界面,編輯.cpp
全部程序如下,下面分小節單獨解釋一下
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
std::string formatString(std::string str) {
std::string newStr = str;
int r = newStr.find('\r');
while (r != std::string::npos)
{
if (r != std::string::npos)
{
newStr.replace(r, 1, "");
r = newStr.find('\r');
}
}
r = newStr.find(' ');
while (r != std::string::npos)
{
if (r != std::string::npos)
{
newStr.replace(r, 1, "");
r = newStr.find(' ');
}
}
r = newStr.find('\n');
while (r != std::string::npos)
{
if (r != std::string::npos)
{
newStr.replace(r, 1, "");
r = newStr.find('\n');
}

}
return newStr;
}
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
Init();
}
MainWindow::~MainWindow()
{
delete ui;
}
//void MainWindow::onButton
void MainWindow::Init(){
connect(ui->onButton,SIGNAL(clicked(bool)),this,SLOT(doProcessClickNum(bool)));
}
void MainWindow::doProcessClickNum(bool){
// ui->textBrowser->setPlainText("s b");
QClipboard *clipboard = QApplication::clipboard();
QString text;
text = QString::fromStdString(formatString(clipboard->text().toStdString()));
clipboard->setText(text);
ui->textBrowser->setPlainText(text);
}
.h 的文件在修改后如下:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include
#include
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void doProcessClickNum(bool);
private:
// QPushButton *onButton;
Ui::MainWindow *ui;
void Init();
};
#endif // MAINWINDOW_H
字符串刪減
函數將輸入中的換行和空格刪除
(本功能用于處理caj閱讀器中復制出來的文檔全都有奇奇怪怪的東西)
具體實現如果看不懂可以去查c++字符串
std::string formatString(std::string str) {
std::string newStr = str;
int r = newStr.find('\r');
while (r != std::string::npos)
{

if (r != std::string::npos)
{
newStr.replace(r, 1, "");
r = newStr.find('\r');
}
}
r = newStr.find(' ');
while (r != std::string::npos)
{
if (r != std::string::npos)
{
newStr.replace(r, 1, "");
r = newStr.find(' ');
}
}
r = newStr.find('\n');
while (r != std::string::npos)
{
if (r != std::string::npos)
{
newStr.replace(r, 1, "");
r = newStr.find('\n');
}
}
return newStr;
}
將按鍵空格app是干嘛的,觸發事件和函數綁定
具體的原理不清楚,但是在Init函數中加了這個函數,把ui的 和,觸發程序都指定之后,就會在按鍵按下之后觸發(bool)函數
void MainWindow::Init(){
connect(ui->onButton,SIGNAL(clicked(bool)),this,SLOT(doProcessClickNum(bool)));
}
按鍵函數
具體功能是,從剪貼板獲取文字,將剪貼板中的文字中的空格,換行刪除,并傳遞給剪貼板,以及把結果輸出給顯示
void MainWindow::doProcessClickNum(bool){
QClipboard *clipboard = QApplication::clipboard();
QString text;
text = QString::fromStdString(formatString(clipboard->text().toStdString()));
clipboard->setText(text);
ui->textBrowser->setPlainText(text);
}
程序單獨運行
就算生成的是 ,.exe文件運行可能也會報錯各種dll找不到,自己復制粘貼還會報錯入口找不到
這里就要用到
這里貼一下別人的介紹:
Qt 官方開發環境使用的動態鏈接庫方式,在發布生成的exe程序時,需要復制一大堆 dll,如果自己去復制dll,很可能丟三落四,導致exe在別的電腦里無法正常運行。
因此 Qt 官方開發環境里自帶了一個工具:.exe。
生成exe文件并拷貝
好了,知道它是干嘛的了,我們把從工程中用 編譯輸出的.exe文件復制出來,我的路徑是這樣的 各位自行參考
D:\\\build---\\.exe
把.exe 復制到另一個文件夾下,可以給他單獨創建一個文件夾,比如text,我的路徑如下
D:\\\test
打開Qt命令行
我的命令行如下
打開MinGW這個命令行,因為我編譯時用的是大概率是上面這個
執行下面這條語句。exe文件路徑用你自己的路徑
然后就會發現這個路徑下面多了一堆東西
這個時候直接雙擊這個.exe,就可以直接運行了
另外如果直接用cmd執行 .exe這句話會報錯:
: to read c:\qt\\\\.pri:
可能是它默認路徑下的和我的不是一個版本
如果有需要的可以從這里下載,不過我也不知道換臺電腦能不能用
鏈接:
提取碼:xvt0