Russian Qt Forum
Ноябрь 27, 2024, 16:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сделать не активным QLineEdit (новичок)  (Прочитано 10985 раз)
aivs
Гость
« : Октябрь 06, 2011, 15:50 »

Начал изучать PyQt4, и никак не могу найти информацию, как сделать элемент QLineEdit не активным, чтобы в нем нельзя было писать, в методах у него не нашел.

Есть строка для ввода текста
titleEdit = QtGui.QLineEdit()

Есть кнопка
ok = QtGui.QPushButton("OK")

Нужно чтобы кнопка блокировала ввод текста, организую связь
self.connect(ok, QtCore.SIGNAL('clicked()'), titleEdit, QtCore.SLOT(' что за метод Непонимающий'))

Подскажите как сделать элемент не активным, а лучше ткните где об этом написано !!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Октябрь 06, 2011, 15:50 »

setEnabled
setDisabled
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
aivs
Гость
« Ответ #2 : Октябрь 06, 2011, 16:18 »

Такой метод я пробовал, из QWidget он.

Делаю так
self.connect(ok, QtCore.SIGNAL('clicked()'), titleEdit, QtCore.SLOT('setDisabled()'))

И при запуске программы у меня сообщение:

[aivs@myhost pyqt]$ ./pyarchnetcfg.py
Object::connect: No such slot QLineEdit::setDisabled()
Записан
Larry
Гость
« Ответ #3 : Октябрь 06, 2011, 16:24 »

а как ты объявил слот setDisabled()? Он у тебя не может соединиться со слотом...У меня такое было при опечатках:)
Записан
aivs
Гость
« Ответ #4 : Октябрь 06, 2011, 16:32 »

Судя по всему никак я не объявлял слот, я думал они всегда доступны, как методы
Моя программа:
Код
Python
#!/usr/bin/python
 
import sys
from PyQt4 import QtGui, QtCore
 
class GridNetCgf(QtGui.QWidget):
   def __init__(self, parent=None):
           QtGui.QWidget.__init__(self, parent)
 
           self.setWindowTitle("Окно")
 
           """Поля для правки адресов"""
           ipEdit = QtGui.QLineEdit()
 
           """Кнопки"""
           ok = QtGui.QPushButton("ok")
 
           """Расстановка элементов"""
           hbox = QtGui.QHBoxLayout()
           hbox.addWidget(ok)
           hbox.addWidget(ipEdit)
 
           self.setLayout(hbox)
           self.resize(300,200)
 
           """Сигналы и слоты"""
           self.connect(ok, QtCore.SIGNAL('clicked()'), ipEdit, QtCore.SLOT('setDisabled()'))
 
app = QtGui.QApplication(sys.argv)
qb = GridNetCgf()
qb.show()
sys.exit(app.exec_())
Записан
Larry
Гость
« Ответ #5 : Октябрь 06, 2011, 16:35 »

я не знаю как в питоне объявляется, но в с++
Код:
public slots:
        void setDisabled();

и потом этот слот надо определить...
« Последнее редактирование: Октябрь 06, 2011, 16:38 от Larry » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Октябрь 06, 2011, 16:38 »

вообще-то эти 2 слота имеют параметр типа bool. можешь создать свой слот (disableLineEdit() к примеру), в котором просто будешь вызывать lineEdit.setDisabled(true): self.connect(ok, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('disableLineEdit()'))
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Larry
Гость
« Ответ #7 : Октябрь 06, 2011, 16:50 »

извиняюсь, эт я протупил  Смеющийся...переработал, бывает  Смеющийся
Записан
aivs
Гость
« Ответ #8 : Октябрь 06, 2011, 17:12 »

Спасибо, почитаю как создать свой слот в python
Записан
iroln
Гость
« Ответ #9 : Октябрь 07, 2011, 22:44 »

Ну вы даёте. setReadOnly(bool flag) же. Улыбающийся Редактировать нельзя, выделять и копировать текст можно. Это лучше чем setEnabled, я гарантирую! Улыбающийся
« Последнее редактирование: Октябрь 07, 2011, 22:46 от iroln » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #10 : Октябрь 08, 2011, 00:53 »

и правда Улыбающийся но от создания собственного слота это не оградит.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
aivs
Гость
« Ответ #11 : Октябрь 09, 2011, 16:28 »

и правда Улыбающийся но от создания собственного слота это не оградит.
Мне нужно, чтобы визуально виджет выглядел бы заблокированным, ни копировать, ни вставлять.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #12 : Октябрь 09, 2011, 16:44 »

значит в слоте вызвать lineEdit.setEnabled(false) (или lineEdit.setDisabled(true), что аналогично)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.126 секунд. Запросов: 22.