2013-05-27 3 views
2

В частности у меня есть 2 вопроса:Удаление тонких границ между виджетами в Qt

1) Как удалить эти тонкие линии между виджетами? setMargin (0) и setSpacing (0) уже установлены.

2) На следующем шаге я хочу удалить строку заголовка окна с помощью FramelessWindowHint. Чтобы перетащить окно, я привяжу мышь к верхнему темно-желтому виджету. Прямо сейчас, верхний виджет представляет собой QTextEdit с подавленными взаимодействиями с клавиатурой. Для цели использования я сомневаюсь, что этот виджет хорош ... Итак, вопрос в том, какие другие виджеты хороши, чтобы создать цветной дескриптор для перетаскивания окна? Возможно, QLabel?

enter image description here

EDIT: Вот код. Я использовал только QTestEdit-Widgets.

from PyQt4.QtGui import * 
from PyQt4 import QtGui,QtCore 
import sys 

class Note(QWidget): 
    def __init__(self, parent = None): 
     super(QWidget, self).__init__(parent) 
     self.createLayout() 
     self.setWindowTitle("Note") 

    def createLayout(self): 
     textedit = QTextEdit() 
     grip = QTextEdit() 
     grip.setMaximumHeight(16) #reduces the upper text widget to a height to look like a grip of a note 
     grip.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) #suppresses the scroll bar that appears under a certain height 
     empty = QTextEdit() 
     empty.setMaximumHeight(16) 
     empty.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 
     resize = QTextEdit() 
     resize.setMaximumHeight(16)   
     resize.setMaximumWidth(16) 
     resize.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 

     layout = QVBoxLayout() 
     layout.addWidget(grip) 
     layout.addWidget(textedit) 

     layout.setMargin(0) 
     layout.setSpacing(0) 

     layoutBottom=QHBoxLayout() 
     layoutBottom.addWidget(empty) 
     layoutBottom.addWidget(resize) 
     layout.addLayout(layoutBottom) 

     self.setLayout(layout) 

     # Set Font 
     textedit.setFont(QFont("Arial",16)) 

     # Set Color 
     pal=QtGui.QPalette() 
     rgb=QtGui.QColor(232,223,80) #Textwidget BG = yellow 
     pal.setColor(QtGui.QPalette.Base,rgb) 
     textc=QtGui.QColor(0,0,0) 
     pal.setColor(QtGui.QPalette.Text,textc) 
     textedit.setPalette(pal) 
     empty.setPalette(pal) 

     pal_grip=QtGui.QPalette() 
     rgb_grip = QtGui.QColor(217,207,45) 
     pal_grip.setColor(QtGui.QPalette.Base,rgb_grip) 
     textc_grip=QtGui.QColor(0,0,0) 
     pal.setColor(QtGui.QPalette.Text,textc_grip) 
     grip.setPalette(pal_grip) 
     resize.setPalette(pal_grip) 

     resize.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) 
     empty.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) 
     grip.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) 

     #textedit.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) #total text widget lock 
     #textedit.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) #Lock? 
     #http://qt-project.org/doc/qt-4.8/qt.html#TextInteractionFlag-enum 

     #self.setWindowFlags(QtCore.Qt.FramelessWindowHint) #removes the title bar 

     #self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) #to make the window stay on top 

class Main(): 
    def __init__(self): 
     self.notes=[] 
     self.app = QApplication(sys.argv) 
     self.app.setQuitOnLastWindowClosed(False); 

     self.trayIcon = QSystemTrayIcon(QIcon(r"C:\Users\Thomas\Desktop\SimpleNotes.ico"), self.app) 
     self.menu = QMenu() 

     self.newWindow = self.menu.addAction("New note") 
     self.separator = self.menu.addSeparator() 
     self.hideNotes = self.menu.addAction("Hide all notes") 
     self.showNotes = self.menu.addAction("Show all notes") 
     self.separator = self.menu.addSeparator() 
     self.saveNotes = self.menu.addAction("Save notes") 
     self.loadNotes = self.menu.addAction("Load notes") 
     self.separator = self.menu.addSeparator() 
     self.showHelp = self.menu.addAction("Show help") 
     self.showAbout = self.menu.addAction("Show about") 
     self.separator = self.menu.addSeparator() 
     self.exitAction = self.menu.addAction("Quit notes") 

     self.exitAction.triggered.connect(self.close) 
     self.newWindow.triggered.connect(self.newNote) 
     self.trayIcon.setContextMenu(self.menu) 
     self.trayIcon.show() 

     self.app.exec() 

    def newNote(self): 
     print("Create new note entry has been clicked") 
     note=Note() 
     note.show() 
     self.notes.append(note) 
     print(self.notes) 

    def hideNotes(self): 
     pass 
    def showNotes(self): 
     pass 
    def saveNotes(self): 
     pass 
    def loadNotes(self): 
     pass 
    def showHelp(self): 
     pass 
    def showAbout(self): 
     pass 

    def close(self): 
     self.trayIcon.hide() 
     self.app.exit() 
     print("Exit menu entry has been clicked") 

if __name__ == '__main__': 
    Main() 
+0

Какие виджеты и компоновки/контейнеры вы используете? –

+0

Вставьте код, чтобы мы могли вам помочь – Nicola

+0

Хорошо, я добавил код. Я использовал только QTextWidgets. Поскольку я делал заметки перед Qt с tkinter, я использовал Frames как дескриптор ... не уверен, что Qt имеет то же самое, потому что пустой кадр, кажется, отталкивается текстовым виджетами? – user2366975

ответ

3

Ответ от thuga был достаточно хорош, поэтому я разместить его здесь:

textedit.setFrameShape(QtGui.QFrame.NoFrame) 

и

grip.setFrameShape(QtGui.QFrame.NoFrame) 

сделал линия исчезнет.

2

на 1. Я использовал:

textEdit.setFrameStyle(QtGui.QFrame.NoFrame) 
Смежные вопросы