今天在給CuteMarkEd添加gitblog博文前綴功能的時候遇到了很多問題,有的是老問題,有的是新問題,因此既溫故又知新了,爲了避免再忘記,因此得記錄。git
最經常使用又最常忘的文件操做:函數
QFile file("categories.txt"); if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) { QMessageBox::information(NULL,"Error!","Can't open the file!"); } QTextStream write(&file); file.close();
有一點須要記住,能夠經過QIODevice::Append
來使的文件指針指向文件末尾,這樣直接能夠往文件末尾添加內容。另外若是是有在指定位置寫入東西的話必需要開放Read的權限,不能WriteOnly
。指針
繼承QTextEdit來實現按下Tab轉移焦點功能。由於默認的TextEdit默認是按下Tab輸入一個製表符,很是不適合使用習慣,因此我重寫了MyTextEdit
類來支持Tab鍵轉移焦點。code
class MyTextEdit : public QTextEdit { public: MyTextEdit(QWidget *parent=0); void SetNext(MyTextEdit *n){next = n;} private: bool event(QEvent *e); private: MyTextEdit *next; };
這裏還有一個很重要的點,是一個我早就想知道的點,那就是Event事件。爲了轉移焦點,我試過在編輯框的父窗口類裏setFoucus
可是調用這個函數的slot沒法響應在MyTextEdit
裏面發出的信號,因爲時間有限我也沒有去深究哪裏的緣由。(~可能只是由於函數名寫錯了?~)既然這種方法不可行那我就直接在他們之間相互轉換,能夠看到上面的類體裏面有一個MyTextEdit *next
這個就是指向按下tab鍵以後跳轉的那個編輯框。這裏的重點在重寫的bool event(QEvent *e)
下面是函數實現。orm
bool MyTextEdit::event(QEvent *e) { if (e->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast<QKeyEvent *>(e); if (keyEvent->key() == Qt::Key_Tab) { // 處理Tab鍵 if(next!=NULL) next->setFocus(); return true; } } return QWidget::event(e); }
這個事件體系很強大,假如以前我作StandardSeach的時候知道這個體系的話可能就會作的更好了。blog
closeEvent(QCloseEvent * event)
不少時候我只是忘記流程了,只要有一個小提醒就能想起來,好比上面那個就是窗口關閉的時候會出現的closeEvent
,有了這個提醒就能夠Google了,因此這個寫的並不詳細。繼承
不過仍是得練習寫做啊。事件