일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 패키지
- opsworks
- ubuntu
- 리눅스
- ssh command
- docker registry
- QT
- 루비
- Chef
- VIM
- 방화벽체크
- 도커
- RUBY
- ssh
- Linux
- 드라이버
- docker
- Openswan
- docker container
- AWS
- window size
- VPN
- VMware
- port
- sudo
- DevOps
- driver
- golang
- 우분투
- docker-compose
- Today
- Total
목록QT (25)
구리의 창고
메신저나 기타 위젯들을 보면 파일을 끌어다놓고 실행하거나 파일전송을 한다. 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..
QTreeWidget과 다르게 QTreeView는 itemClicked 시그날이 없다. 그래서 QAbstractItemView 에 있는 clicked 시그날을 활용해야한다. QObject::connect(ui.treeView, SIGNAL(clicked(const QModelIndex)), this, SLOT(itemClicked(const QModelIndex))); itemClicked 슬롯은 인자로 QModelIndex를 받게된다. 여기서 Index는 QTreeView에서 클릭된 값을 말한다. QModelIndex의 레퍼런스는 링크를 참고하면된다. http://doc.qt.nokia.com/4.7/qmodelindex.html 보통 클릭시에는 해당 인덱스의 데이터를 필요로 한다. 데이터를 가져오는 ..
메신저같은 프로그램을 만들다보면 한 개만 실행해야 할 때가 있다. 특별한 인자는 없으며 공유메모리를 사용해야한다. #include "MyApp.h" #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MyApp w; QSharedMemory shared("very-very-unique-key"); if (!shared.create(512, QSharedMemory::ReadWrite)) { exit(0); } w.show(); return a.exec(); } 위와 같이 간단하게 해결!
일단 공식 문서는 아래 링크에 나와있다. http://doc.qt.nokia.com/4.6/appicon.html 각 플랫폼마다 설정하는 법이 다르다. 필요한 윈도우만 말해보도록 하겠다. 일단 아이콘 파일을 ico 형식에 맞춰서 만든다. 그 다음 appname.rc 파일을 만들고나서 텍스트 에디터로 오픈한다. 있는 내용 전부 지우고 IDI_ICON1 ICON DISCARDABLE "myappico.ico" 위와 같이 적어준다. 그 후, qmake 로 makefile을 생성해주고 appname.pro 파일을 열어서 RC_FILE=appname.rc 를 추가해준다. 그리고 nmake !!
QT프로그래밍을 하다보면 keyPressed 같은 이벤트를 자주 쓰게된다. 이럴 때 마다 기존 위젯을 상속받아 새로운 커스톰위젯을 만들어야하는 상황이 발생한다. 이거 매우매우매우매우 귀찮다.. 파일도 두 개씩 만들어지고!!! 찾아보니 이벤트 필터라는 것이 있다. MyWidget 에 lineEdit 과 nameEdit 이 있다고 가정했을 때 MyWidget::MyWidget(QWidget* parent) { lineEdit->installEventFilter(this); nameEdit->installEventFilter(this); } bool MyWidget::eventFilter(QObject* target, QEvent* event) { if (target == lineEdit) { //TO DO ..
http://doc.qt.nokia.com/4.7/qdesktopwidget.html QDesktopWidget 을 사용하면된다. 하단에 시작표시줄을 제외한 영역을 구하려면.. QDesktopWidget desktop; QRect rect = desktop.availableGeometry(); rect.right() 와 rect.bottom() 을 봐주면된다.
http://doc.qt.nokia.com/4.7/qt.html#WindowFlags QWidget::setWindowFlags 를 통해서 타이틀 바를 삭제 할 수 있다. Qt::WindowsFlags 에 보면 지정 할 수 있는 WindowStyle이 나와있다. 이 중에 Qt::Popup 설정.. WIdget 생성자에서 setWindowFlags(Qt::Popup) 한 줄이면 해결