일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 패키지
- ubuntu
- AWS
- 도커
- Linux
- sudo
- golang
- window size
- 방화벽체크
- 드라이버
- docker registry
- VIM
- VMware
- driver
- VPN
- 우분투
- ssh command
- QT
- ssh
- Openswan
- 리눅스
- opsworks
- docker container
- port
- DevOps
- docker
- 루비
- docker-compose
- Chef
- RUBY
- Today
- Total
목록카테고리 (128)
구리의 창고
인터넷을 검색해보면 keyPressEvent 를 수정하라고 돼있다. 하지만 더 확실한 해결책은 reject를 오버라이딩 하는 것이다. void Dialog::reject() { if (isReject()) { QDialog::reject(); } } 응용해서 ESC를 누를 시 closeEvent를 발생시키고 싶으면 아래처럼 수정하면된다. void Dialog::reject() { close(); }
delete 시에는 아래와 같이 NULL 인지 아닌지 체크해줄 필요가 없다. if (p) //useless { delete p; }
Model/View 프로그래밍을 하다보면 많은 정보들이 QModelIndex 형식으로 넘어온다. 그리고 그 index에 맞는 특정 column, row 의 정보가 필요하다. 아래와 같이 가져 올 수 있다. const QAbstractItemModel * model = index.model(); qDebug() data(model->index(row, col), Qt::DisplayRole); QVariant로 리턴되므로 입맛에 맞게 고쳐쓰면 된다. * QStandardItemModel 에는 itemFromIndex 라는 함수가 존재한다. QStandardItem * QStandardItemModel::itemFromIndex ( const QModelIndex & index ) const http://d..
QTableView 문서를 뒤적거려보면 setColumnWidth(int index, int width) 라는 함수를 발견 할 수 있다. http://doc.qt.nokia.com/4.7/qtableview.html 보통 QTableView를 쓰게되면 subclass 를 만들어서 아래처럼 그 안에서 초기화를 하게된다. TableView::TableView(QWidget* parent) : QTableView(parent) { model = new TableModel(); setModel(model); setColumnWidth(0, 30); } 하지만, setColumnWidth는 subclass 안에서 호출하면 작동하지 않는다. 아래처럼 TableView 로드가 끝나고 나서 불러야한다. TableVie..
QTreeView를 사용 할 때 checkbox를 사용하다보면 문제가 생긴다. 아이템과 마우스를 처리하면서 clicked 시그날을 사용 할 때가 있는데, 문제는 item을 클릭할 때와 checkbox를 클릭 할 때 체크되게 하는 경우이다. checkbox도 item으로 인식하기 때문에 check와 click이 같이 발생하게 되는것이다. 그래서 시그날이 발생하는 순서를 살펴봤다. * clicked 의 경우 mousePressEvent() -> mouseReleaseEvent() => clicked 발생 * checked 의 경우 (시그날은 아니지만) mouseReleaseEvent() => checked 발생 위와 같이 mouseReleaseEvent() 시에 checked와 clicked 가 같이 발생하..
QT 에 clicked() 라는 마우스 클릭시 발생하는 시그날이 있다. MFC에 익숙해져있다면 click은 보통 좌클릭을 생각 할 것이다. 이럴 때 우클릭 이벤트를 막아야한다. mousePressEvent 를 받아서 우클릭이면 ignore 시킨다. 아래는 QTreeView 의 경우를 예를 든 소스이다. void OrganizationTreeView::mousePressEvent(QMouseEvent* event) { if (event->button() == Qt::RightButton) { event->ignore(); } else { QTreeView::mousePressEvent(event); } }
메신저나 기타 위젯들을 보면 파일을 끌어다놓고 실행하거나 파일전송을 한다. QTextEdit 도 drag & drop 을 지원하긴 하는데 !! 파일은 드롭 불가표시가 뜨고만다. 이 부분을 해결하려면 Qt 에 있는 수 많은 예제들에서 찾기 힘든데~ canInsertFromMimeData를 상속받아서 원하는 필터를 추가해주면된다. TextEdit::TextEdit(QWidget* parent) : QTextEdit(parent) { setAcceptDrops(true); } bool TextEdit::canInsertFromMimeData(const QMimeData* source) const { return source->hasUrls() || QTextEdit::canInsertFromMimeData(s..
QObject를 상속받아서 class를 구성 할 경우 주의해야 할 점이 있다. 코딩 하다보면 위와 같은 에러가 뜨는 경우를 볼 수 있다. 'QObject::QObject' cannot access private member declared in class 'QObject' 오오오오.. 이게 무슨 에러신가...ㅠㅠㅠ 하면서 알아봤는데, 복사생성자를 사용하면안된다. QObject에는 구현돼있지 않나보다. 복사생성자를 쓰지말던지, 모든 객체를 new로 생성해서 넘겨줘야한다. class MyObject : public QObject { } 와 같이 class를 구현했다면 MyObject obj; // 에러 MyObject* obj = new MyObject(); // 정상
QSet 와 QLIst의 가장 큰 차이는 중복의 허용이다. QList list; list
QTreeView 의 글씨색을 변경해보자. QTreeWidget 의 경우, setTextColor 라는 함수가 존재한다. 하지만 QTreeView에는 그런거 없다. QStyle 따위를 사용하면 될지 안해봤지만.. 그보다 좋은 방법이 있다. setData 중 적절한 Role을 세팅해주는 것이다. 자세한 내용은 아래 링크를 참고하면된다. http://doc.qt.nokia.com/4.7/qt.html#ItemDataRole-enum setData(QColor(255, 0, 0), Qt::TextColorRole) 정도로 변경해주면된다. enum Qt::ItemDataRoleEach item in the model has a set of data elements associated with it, each w..