2016-12-19 11 views

ответ

0

Вы подключаете функцию, которая включает/отключает действие на основе текстовых изменений plainText(), к сигналу текстового редактирования textChanged().

Например:

void MyWidget::someSetupMethod() 
{ 
    // ... some code that sets up myTextEdit and myFindAction here 
    connect(myTextEdit, &QTextEdit::textChanged, myFindAction, [myTextEdit, myFindAction]() { 
     myFindAction->setEnabled(!myTextEdit->plainText().isEmpty()); 
    }); 
    // ... 
} 

или, если вы не можете или не хотите использовать C++ 11, что-то вроде

void MyWidget::someSetupMethod() 
{ 
    // ... some code that sets up m_myTextEdit and m_myFindAction here 
    connect(m_myTextEdit, &QTextEdit::textChanged, this, &MyWidget::updateFindAction); 
    // ... 
} 

void MyWidget::updateFindAction() 
{ 
    m_myFindAction->setEnabled(!m_myTextEdit->plainText().isEmpty()); 
} 
+0

Я написал программу, как блокнот в Windows. Я использую код для создания главного окна. Создайте метод findDialog с помощью ui. Но я не знаю, как использовать ui в классе mainwindow. Такие, как ui имеют lineedit.how использовать lineedit в классе mainwindow? – konalo

+0

В конструкторе класса mainwindow вы найдете что-то вроде 'ui-> setupUi (this)'. После этого вы можете получить доступ к виджетам из файла '.ui' через объект' ui', например 'ui-> textEdit'. Возможно, вам следует следовать [некоторым примерам виджета] (http://doc.qt.io/qt-5/examples-widgets.html). – E4z9

+0

, не очень. Но фактически. Ui-> setui (Это) только в finddlg.h ican использует ui-> okbutton в конструкторе finddlg. Когда я добавляю #include «finddlg.h» в mainwindow.h, я не могу использовать ui-> кнопку – konalo