pos機(jī)開發(fā)軟件,使用Qt開發(fā)筆記軟件

 新聞資訊2  |   2023-05-26 09:46  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)開發(fā)軟件,使用Qt開發(fā)筆記軟件的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)開發(fā)軟件的問題,今天pos機(jī)之家(m.dsth100338.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!

本文目錄一覽:

1、pos機(jī)開發(fā)軟件

pos機(jī)開發(fā)軟件

初始化流程完善之后,我們可以朝著筆記軟件的基本目標(biāo)出發(fā):錄入文本。

文本元素

依據(jù)最初的計(jì)劃,我希望所有元素以“塊”的形式呈現(xiàn)。文本是一個(gè)塊,圖片是一個(gè)塊…… 今天,我們先從文本元素入手——畢竟這是筆記軟件最基本的需要。

文字元素取名為mnTextItem,派生自mnNoteItem。

class mnTextItem : public mnNoteItem{public: void setText(const QString &text); const QString &text() const { return m_text; } void paint(QPainter &painter) override;protected: QString m_text;};

目前的實(shí)現(xiàn)很簡單,只是將一個(gè)文本draw出來即可。

void mnTextItem::paint(QPainter &painter){ painter.drawText(m_contentRect, Qt::AlignLeft | Qt::AlignVCenter, m_text);}元素層次

對于一篇筆記,元素可以按多種方式組織。前面我們希望元素有“成組”功能,為此創(chuàng)建了mnGroupItem。更進(jìn)一步,我們把組織元素的元素可以看成一篇文章,一篇筆記,當(dāng)然也可以是一個(gè)頁面,我這里選擇后者,即mnPageItem。由于我們已經(jīng)有了mnGroupItem,mnPageItem從它繼承而來即可。

元素呈現(xiàn)

元素包含在一個(gè)頁面(mnPageItem)中,這表示一開始就要有一個(gè)有效的頁面。另一方面,元素僅僅是一個(gè)數(shù)據(jù)行為的集合,它并沒有GUI載體,為了讓用戶看到它,我們需要將它呈現(xiàn)在一個(gè)窗口上,這個(gè)窗口就是筆記畫布 —— mnNoteCanvas。

對于畫布,目前給予兩個(gè)特性:

窗口事件采用轉(zhuǎn)發(fā)策略交給當(dāng)前活動(dòng)元素處理一個(gè)畫布僅關(guān)聯(lián)一個(gè)頁面

對于元素的編輯,可以這樣設(shè)想:畫布要處理各種類型的元素,所有的編輯操作交給它,負(fù)擔(dān)太大了!最終畫布類中會(huì)充斥著大量的代碼,這可能并不合適。為此,對于文本元素,我們把它的編輯功能分離到一個(gè)叫mnTextEditor的類中;可以類推,如果有圖像元素,可以將它的編輯功能分派到mnImageEditor中。

通過上面的分析,我們大致可以構(gòu)造一下畫布組成:

mnNoteCanvas::mnNoteCanvas(QWidget *parent) : QWidget(parent){ m_textEditor = new mnTextEditor(this); m_currentPageItem = new mnPageItem();}即點(diǎn)即輸入

我希望的筆記軟件它是排版自由的:塊可以在頁面的任何位置。為此,文本塊想支持即點(diǎn)即輸入功能,這樣,可以在一開始,就把元素放在想要的位置,很顯然這需要處理鼠標(biāo)消息。

void mnTextEditor::mousePressEvent(QMouseEvent *event){ if (event->button() == Qt::LeftButton) { m_mousePressPos = event->pos(); mnPageItem *pageItem = m_canvas->currentPageItem(); mnTextItem *textItem = activeTextItem = new mnTextItem(); pageItem->add(textItem); textItem->setPos(m_mousePressPos); setBlinkCursorEnable(true); }}void mnTextEditor::draw(QPainter &painter){ mnPageItem *pageItem = m_canvas->currentPageItem(); pageItem->paint(painter); drawCaret(painter);}

從代碼中可以看到,當(dāng)點(diǎn)擊鼠標(biāo)時(shí),我們?nèi)〉卯?dāng)前畫布上的頁面對象mnPageItem,再為頁面創(chuàng)建一個(gè)文本元素,并把它裝進(jìn)頁面中,最后啟用光標(biāo)閃爍,等待用戶輸入。

流程總結(jié)程序啟動(dòng)后創(chuàng)建主界面主界面中創(chuàng)建了一個(gè)mnNoteCanasmnNoteCanvas中創(chuàng)建一個(gè)mnPageItem和mnTextEditormnNoteCanvas是窗口,接收并分發(fā)消息。mnNoteCanvas中點(diǎn)擊鼠標(biāo)左鍵,轉(zhuǎn)發(fā)給mnTextEditor。mnTextEditor在點(diǎn)擊消息中,創(chuàng)建一個(gè)mnTextItem。mnNoteCanvas的繪制消息轉(zhuǎn)發(fā)給mnTextEditor。mnTextEditor繪制當(dāng)前頁面與插入符。

關(guān)于第8點(diǎn),這并不正確,頁面繪制應(yīng)由canvas引發(fā),目前這么做僅用于快速驗(yàn)證可行性。

以上就是關(guān)于pos機(jī)開發(fā)軟件,使用Qt開發(fā)筆記軟件的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)開發(fā)軟件的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://m.dsth100338.com/newsone/57714.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。