ABAP Netweaver, Hybris Commerce和SAP 云平臺(tái)的登錄認(rèn)證
739
2025-03-31
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
void createAction();
void createMenu();
void createToolBar();
void fileRead();//讀文件
void fileWrite();//寫文件
~MainWindow();
public:
Ui::MainWindow *ui;
QMenu *file;
QMenu *edit;
QMenu *style;
QMenu *insert;//插入菜單
QMenu *search;//查找菜單
QMenu *help;//幫助菜單
QToolBar *fileToolBar;
QToolBar *editToolBar;
QToolBar *styleToolBar;
QToolBar *insertToolBar;
QToolBar *searchToolBar;
QToolBar *helpToolBar;
QTextEdit *textEdit;
QAction *newFile;
QAction *openFile;
QAction *save;
QAction *saveAs;
QAction *printText;
QAction *exit;
QAction *undoAction;//撤銷
QAction *redoAction;//恢復(fù)
QAction *copy;
QAction *cut;
QAction *paste;
QAction *insertImg;
QAction *insertTable;
QAction *find;
QAction *about;
QAction *aboutQt;
QAction *bold;
QAction *italic;
QAction *underLine;
QAction *color;
QAction *left;
QAction *center;
QAction *right;
QAction *justify;
QActionGroup *group;
QLabel *fontLabel;
QLabel *fontSizeLabel;
QFontComboBox *fontCom;
QComboBox *fontSizeCom;
QString fileName;
QLineEdit *lineEdit;
QLabel *label;
QPushButton *btn;
QVBoxLayout *layout;
QLineEdit *column;
QLineEdit *row;
private slots:
void findNext();
void NewFile();
void OpenFile();
void Save();
void SaveAs();
void Color();
void Bold();
void Italic();
void UnderLine();
void ALignment(QAction *);
void PrintText();
void InsertImage();
void InsertTable();
void mergeFormat(QTextCharFormat);
void FontComBox(QString fontComStr);
void FontSizeCom(QString fontSizeStr);
void Find();
void About();
void AboutQt();
void showCurrentCharFormatChanged(const QTextCharFormat &form);
};
#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
setWindowIcon(QIcon(":/images/textEditor.png"));
setWindowTitle(tr("Qt文本編輯器"));
textEdit = new QTextEdit();
setCentralWidget(textEdit);
createAction();//創(chuàng)建動(dòng)作
createMenu();//創(chuàng)建菜單
createToolBar();//創(chuàng)建工具欄
//文件菜單的動(dòng)作與槽的連接
connect(newFile,SIGNAL(triggered()),this,SLOT(NewFile()));
connect(openFile,SIGNAL(triggered()),this,SLOT(OpenFile()));
connect(save,SIGNAL(triggered()),this,SLOT(Save()));
connect(saveAs,SIGNAL(triggered()),this,SLOT(SaveAs()));
connect(exit,SIGNAL(triggered()),this,SLOT(close()));
//編輯菜單的動(dòng)作與槽的連接
connect(cut,SIGNAL(triggered()),textEdit,SLOT(cut()));
connect(copy,SIGNAL(triggered()),textEdit,SLOT(copy()));
connect(paste,SIGNAL(triggered()),textEdit,SLOT(paste()));
connect(undoAction,SIGNAL(triggered()),textEdit,SLOT(undo()));
connect(redoAction,SIGNAL(triggered()),textEdit,SLOT(redo()));
//字體設(shè)置動(dòng)作與槽的連接
connect(fontCom,SIGNAL(activated(QString)),this,
SLOT(FontComBox(QString)));
//字號(hào)設(shè)置動(dòng)作與槽的連接
connect(fontSizeCom,SIGNAL(activated(QString)),this,SLOT(FontSizeCom(QString)));
connect(textEdit,SIGNAL(currentCharFormatChanged(QTextCharFormat&)),
this,SLOT(showCurrentCharFormatChanged(QTextCharFormat&)));
//顏色編輯動(dòng)作與槽的連接
connect(color,SIGNAL(triggered()),this,SLOT(Color()));
//格式菜單動(dòng)作與槽的連接
connect(bold,SIGNAL(triggered()),this,SLOT(Bold()));
connect(italic,SIGNAL(triggered()),this,SLOT(Italic()));
connect(underLine,SIGNAL(triggered()),this,SLOT(UnderLine()));
connect(group,SIGNAL(triggered(QAction*)),this,SLOT(ALignment(QAction *)));
//插入菜單動(dòng)作與槽的連接
connect(insertImg,SIGNAL(triggered()),this,SLOT(InsertImage()));
connect(insertTable,SIGNAL(triggered()),this,SLOT(InsertTable()));
//打印動(dòng)作與槽的連接
connect(printText,SIGNAL(triggered()),this,SLOT(PrintText()));
//查找菜單動(dòng)作與槽的連接
connect(find,SIGNAL(triggered()),this,SLOT(Find()));
connect(about,SIGNAL(triggered()),this,SLOT(About()));
connect(aboutQt,SIGNAL(triggered()),this,SLOT(AboutQt()));
resize(1000,600);
}
//創(chuàng)建動(dòng)作
void MainWindow::createAction(){
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
//新建文件
newFile = new QAction(QIcon(":/images/new.png"),tr("新建文件"),this);
newFile->setShortcut(tr("Ctrl+N"));
newFile->setStatusTip(tr("新建一個(gè)文件"));
//打開文件
openFile = new QAction(QIcon(":/images/open.png"),tr("打開文件"),this);
openFile->setShortcut(tr("Ctrl+O"));
openFile->setStatusTip(tr("打開一個(gè)文件"));
//保存文件
save = new QAction(QIcon(":/images/save.png"),tr("保存"),this);
save->setShortcut(tr("Ctrl+S"));
save->setStatusTip(tr("保存文件"));
//另存為
saveAs = new QAction(QIcon(":/images/saveAs.png"),tr("另存為"),this);
saveAs->setShortcut(tr("Ctrl+A"));
saveAs->setStatusTip(tr("文件另存為"));
//打印
printText = new QAction(QIcon(":/images/printText.png"),tr("打印"),this);
printText->setShortcut(tr("Ctrl+P"));
printText->setStatusTip(tr("打印"));
//退出
exit = new QAction(QIcon(":/images/exit.png"),tr("退出"),this);
exit->setShortcut(tr("Ctrl+E"));
exit->setStatusTip(tr("退出"));
//恢復(fù)
redoAction = new QAction(QIcon(":/images/redo.png"),tr("恢復(fù)"),this);
redoAction->setShortcut(tr("Ctrl+R"));
redoAction->setStatusTip(tr("恢復(fù)"));
//撤銷
undoAction = new QAction(QIcon(":/images/undo.png"),tr("撤銷"),this);
undoAction->setShortcut(tr("Ctrl+U"));
undoAction->setStatusTip(tr("撤銷"));
//剪切
cut = new QAction(QIcon(":/images/cut.png"),tr("剪切"),this);
cut->setShortcut(tr("Ctrl+X"));
cut->setStatusTip(tr("剪切"));
//復(fù)制
copy = new QAction(QIcon(":/images/copy.png"),tr("復(fù)制"),this);
copy->setShortcut(tr("Ctrl+C"));
copy->setStatusTip(tr("復(fù)制"));
//粘貼
paste = new QAction(QIcon(":/images/paste.png"),tr("黏貼"),this);
paste->setShortcut(tr("Ctrl+P"));
paste->setStatusTip(tr("粘貼"));
//粗體
bold = new QAction(QIcon(":/images/bold.png"),tr("粗體"),this);
bold->setStatusTip(tr("粗體字"));
bold->setCheckable(true);
//斜體
italic = new QAction(QIcon(":/images/italic.png"),tr("斜體"),this);
italic->setStatusTip(tr("斜體字"));
italic->setCheckable(true);
//下劃線
underLine = new QAction(QIcon(":/images/underline.png"),tr("下劃線"),this);
underLine->setStatusTip(tr("下劃線"));
underLine->setCheckable(true);
//顏色
color = new QAction(QIcon(":/images/color.png"),tr("顏色"),this);
color->setShortcut(tr("Ctrl+C"));
color->setStatusTip(tr("顏色編輯"));
group = new QActionGroup(this);
//左對(duì)齊
left = new QAction(QIcon(":/images/left.png"),tr("左對(duì)齊"),group);
left->setStatusTip(tr("左對(duì)齊"));
left->setCheckable(true);
//居中
center = new QAction(QIcon(":/images/center.png"),tr("居中對(duì)齊"),group);
center->setStatusTip(tr("居中對(duì)齊"));
center->setCheckable(true);
//右對(duì)齊
right = new QAction(QIcon(":/images/right.png"),tr("右對(duì)齊"),group);
right->setStatusTip(tr("右對(duì)齊"));
right->setCheckable(true);
//兩端對(duì)齊
justify = new QAction(QIcon(":/images/justify.png"),tr("兩端對(duì)齊"),group);
justify->setStatusTip(tr("兩端對(duì)齊"));
justify->setCheckable(true);
group->addAction(left);
group->addAction(center);
group->addAction(right);
group->addAction(justify);
//插入圖片
insertImg = new QAction(QIcon(":/images/image.png"),tr("插入圖片"),this);
insertImg->setStatusTip(tr("插入圖片"));
//插入表格
insertTable = new QAction(QIcon(":/images/table.png"),tr("插入表格"),this);
insertTable->setStatusTip(tr("插入表格"));
//查找
find = new QAction(QIcon(":/images/find.png"),tr("查找"),this);
find->setShortcut(tr("Ctrl+F"));
find->setStatusTip(tr("查找"));
//關(guān)于
about = new QAction(QIcon(":/images/about.png"),tr("關(guān)于"),this);
about->setStatusTip(tr("關(guān)于"));
//字體
fontLabel = new QLabel(tr("字體"));
fontCom = new QFontComboBox();
fontCom->setFontFilters(QFontComboBox::ScalableFonts);
fontCom->setStatusTip(tr("字體設(shè)置"));
//字號(hào)
fontSizeLabel = new QLabel(tr("字號(hào)"));
QFontDatabase db;
fontSizeCom = new QComboBox();
foreach(int size,db.standardSizes())
fontSizeCom->addItem(QString::number(size));
fontSizeCom->setStatusTip(tr("字號(hào)設(shè)置"));
//關(guān)于
aboutQt = new QAction(tr("關(guān)于QT"),this);
aboutQt->setStatusTip(tr("關(guān)于Qt"));
}
//創(chuàng)建菜單
void MainWindow::createMenu(){
//文件菜單
file = menuBar()->addMenu(tr("文件(&F)"));
file->addAction(newFile);
file->addAction(openFile);
file->addSeparator();
file->addAction(save);
file->addAction(saveAs);
file->addSeparator();
file->addAction(printText);
file->addSeparator();
file->addAction(exit);
//編輯菜單
edit = menuBar()->addMenu(tr("編輯(&E)"));
edit->addAction(undoAction);
edit->addAction(redoAction);
edit->addSeparator();
edit->addAction(cut);
edit->addAction(copy);
edit->addAction(paste);
//插入菜單
insert = menuBar()->addMenu(tr("插入(&I)"));
insert->addAction(insertImg);
insert->addAction(insertTable);
//查找菜單
search = menuBar()->addMenu(tr("查找(&F)"));
search->addAction(find);
//格式菜單
style = menuBar()->addMenu(tr("格式(&S)"));
style->addAction(bold);
style->addAction(italic);
style->addAction(underLine);
style->addSeparator();
style->addAction(color);
style->addSeparator();
style->addAction(left);
style->addAction(center);
style->addAction(right);
style->addAction(justify);
//幫助菜單
help = menuBar()->addMenu(tr("幫助(&H)"));
help->addAction(about);
help->addAction(aboutQt);
}
//創(chuàng)建工具欄
void MainWindow::createToolBar(){
//文件
fileToolBar = addToolBar(tr("文件(&N)"));
fileToolBar->addAction(newFile);
fileToolBar->addAction(openFile);
fileToolBar->addSeparator();
fileToolBar->addAction(save);
fileToolBar->addAction(saveAs);
fileToolBar->addSeparator();
fileToolBar->addAction(printText);
fileToolBar->addSeparator();
//編輯
editToolBar = addToolBar(tr("編輯(&E)"));
editToolBar->addAction(undoAction);
editToolBar->addAction(redoAction);
editToolBar->addSeparator();
editToolBar->addAction(cut);
editToolBar->addAction(copy);
editToolBar->addAction(paste);
//格式
styleToolBar = addToolBar(tr("格式(&S)"));
styleToolBar->addAction(bold);
styleToolBar->addAction(italic);
styleToolBar->addAction(underLine);
styleToolBar->addSeparator();
styleToolBar->addAction(left);
styleToolBar->addAction(center);
styleToolBar->addAction(right);
styleToolBar->addAction(justify);
styleToolBar->addSeparator();
styleToolBar->addWidget(fontLabel);
styleToolBar->addWidget(fontCom);
styleToolBar->addWidget(fontSizeLabel);
styleToolBar->addWidget(fontSizeCom);
//插入
insertToolBar = addToolBar(tr("插入(&I)"));
insertToolBar->addAction(insertImg);
insertToolBar->addAction(insertTable);
insertToolBar->addSeparator();
//查找
searchToolBar = addToolBar(tr("查找(&F)"));
searchToolBar->addAction(find);
search->addSeparator();
}
//封裝的讀文件,用于精簡程序
void MainWindow::fileRead(){
QFile file(fileName);
if(!file.open(QFile::ReadOnly|QFile::Text)){
QMessageBox::warning(this,tr("多文檔編輯器"),
tr("不可以打開文件%1:\n%2").arg(fileName).arg(file.errorString()));
return;
}
QTextStream in(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
textEdit->setPlainText(in.readAll());
QApplication::restoreOverrideCursor();
}
//封裝的寫文件,用于精簡程序
void MainWindow::fileWrite(){
QFile file(fileName);
if(!file.open(QFile::WriteOnly|QFile::Text)){
QMessageBox::warning(this,tr("多文檔編輯器"),
tr("不可以寫入文件%1:/n%2").arg(fileName).arg(file.errorString()));
return;
}
QTextStream out(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
out<
QApplication::restoreOverrideCursor();
return;
}
//新建文件
void MainWindow::NewFile(){
MainWindow *newEdit = new MainWindow;
newEdit->show();
}
//打開文件
void MainWindow::OpenFile(){
fileName = QFileDialog::getOpenFileName(this,tr("打開文件"),"/","allFile(*.*)");
if(!fileName.isEmpty()){
if(textEdit->document()->isEmpty()){
fileRead();
}else{
MainWindow *newEdit = new MainWindow;
newEdit->show();
QFile file(fileName);
if(!file.open(QFile::ReadOnly|QFile::Text)){
QMessageBox::warning(this,tr("多文檔編輯器"),
tr("不可以打開文件%1:\n%2").arg(fileName).arg(file.errorString()));
return;
}
QTextStream in(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
newEdit->textEdit->setPlainText(in.readAll());
QApplication::restoreOverrideCursor();
}
}
}
//保存文件
void MainWindow::Save(){
if(fileName.isEmpty()){
fileName = QFileDialog::getSaveFileName(this,tr("另存為"),tr("未命名.txt"));
fileWrite();
}else{
fileWrite();
}
}
//另存為
void MainWindow::SaveAs(){
fileName = QFileDialog::getSaveFileName(this,tr("另存為"),tr("未命名.txt"));
fileWrite();
}
//字體設(shè)置
void MainWindow::FontComBox(QString fontComStr){
QTextCharFormat format;
format.setFontFamily(fontComStr);
mergeFormat(format);
}
void MainWindow::mergeFormat(QTextCharFormat format){
QTextCursor cursor = textEdit->textCursor();
if(!cursor.hasSelection())
cursor.select(QTextCursor::WordUnderCursor);
cursor.mergeCharFormat(format);
textEdit->mergeCurrentCharFormat(format);
}
//字號(hào)設(shè)置
void MainWindow::FontSizeCom(QString fontSizeStr){
QTextCharFormat format;
format.setFontPointSize(fontSizeStr.toFloat());
textEdit->mergeCurrentCharFormat(format);
}
//顏色設(shè)置
void MainWindow::Color(){
QColor color = QColorDialog::getColor(Qt::blue,this);
if(color.isValid()){
QTextCharFormat format;
format.setForeground(color);
textEdit->mergeCurrentCharFormat(format);
}
}
//粗體
void MainWindow::Bold(){
QTextCharFormat format;
format.setFontWeight(bold->isChecked()?QFont::Bold:QFont::Normal);
textEdit->mergeCurrentCharFormat(format);
}
//斜體
void MainWindow::Italic(){
QTextCharFormat format;
format.setFontItalic(italic->isChecked());
textEdit->mergeCurrentCharFormat(format);
}
//下劃線
void MainWindow::UnderLine(){
QTextCharFormat format;
format.setFontUnderline(underLine->isChecked());
textEdit->mergeCurrentCharFormat(format);
}
//對(duì)齊
void MainWindow::ALignment(QAction *act){
if(act == left){
textEdit->setAlignment(Qt::AlignLeft);
}else if(act == center){
textEdit->setAlignment(Qt::AlignCenter);
}else if(act == right){
textEdit->setAlignment(Qt::AlignRight);
}else if(act == justify){
textEdit->setAlignment(Qt::AlignJustify);
}
}
//插入圖片
void MainWindow::InsertImage(){
QTextCursor cursor = textEdit->textCursor();
QTextImageFormat format;
QString image = QFileDialog::getOpenFileName(this,"insert image","/","png(*.png)");
format.setName(image);
cursor.insertImage(format);
}
//插入表格,用到輸入對(duì)話框
void MainWindow::InsertTable(){
bool ok;
int a = QInputDialog::getInt(this,tr("插入表格"),tr("輸入行數(shù):"),0,0,300,1,&ok);
int b = QInputDialog::getInt(this,tr("插入表格"),tr("輸入列數(shù):"),0,0,300,1,&ok);
if(ok){
QTextCursor cursor = textEdit->textCursor();
QTextTableFormat format;
format.setCellSpacing(0);
format.setCellPadding(30);
cursor.insertTable(a,b,format);
}
}
//查找
void MainWindow::Find(){
QDialog *dialog = new QDialog(this);
dialog->setWindowTitle(tr("查找"));
lineEdit = new QLineEdit(dialog);
label = new QLabel(this);
btn = new QPushButton(dialog);
btn->setText(tr("下一個(gè)"));
connect(btn,SIGNAL(clicked()),this,SLOT(findNext()));
layout = new QVBoxLayout();
layout->addWidget(lineEdit);
layout->addWidget(btn);
dialog->setLayout(layout);
dialog->resize(60,60);
dialog->show();
}
void MainWindow::findNext(){
QString str = lineEdit->text();
bool isfind = textEdit->find(str,QTextDocument::FindBackward);
if(isfind){
label->setText(tr("查找目標(biāo)在,行號(hào):%1 列號(hào):%2!").arg(textEdit->textCursor().blockNumber()).arg(textEdit->textCursor().columnNumber()));
ui->statusBar->addPermanentWidget(label);
}
}
//打印
void MainWindow::PrintText(){
QPrinter printer;
QPrintDialog printDialog(&printer,this);
if(printDialog.exec()){
QTextDocument *textDocument = textEdit->document();
textDocument->print(&printer);
}
}
//幫助
void MainWindow::About(){
QMessageBox::about(this,tr("關(guān)于"),tr("這是一個(gè)文本編輯器"));
}
void MainWindow::AboutQt(){
QMessageBox::aboutQt(this,tr("Qt編輯器"));
}
void MainWindow::showCurrentCharFormatChanged(const QTextCharFormat &form){
fontCom->setCurrentIndex(fontCom->findText(form.fontFamily()));
fontSizeCom->setCurrentIndex(fontSizeCom->findText(QString::number(form.fontPointSize())));
bold->setChecked(form.font().bold());
italic->setChecked(form.font().italic());
underLine->setChecked(form.font().underline());
}
MainWindow::~MainWindow()
{
delete ui;
}
main.cpp:
#include
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
?
Qt
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。