Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitk::Forms::QuestionWithOtherOption Class Reference

Base class for questions with options that may also have a free text option. More...

#include <mitkQuestionWithOtherOption.h>

Inheritance diagram for mitk::Forms::QuestionWithOtherOption:
Collaboration diagram for mitk::Forms::QuestionWithOtherOption:

Public Member Functions

 QuestionWithOtherOption ()
 Constructor. More...
 
 ~QuestionWithOtherOption () override
 Virtual destructor. More...
 
std::vector< std::string > GetResponsesAsStrings () const override
 Return all selected responses as strings, including the "Other" response if set. More...
 
void ClearResponses () override
 Clear all selected responses, including the "Other" response. More...
 
bool IsComplete () const override
 Check whether at least one response (regular or "Other") has been given. More...
 
bool HasOtherOption () const
 Query whether this question actually has an "Other" option. More...
 
void EnableOtherOption ()
 Switch on the "Other" option. More...
 
- Public Member Functions inherited from mitk::Forms::QuestionWithOptions
 ~QuestionWithOptions () override
 Virtual destructor. More...
 
size_t AddOption (const std::string &option)
 Add a non-exclusive option as possible answer to the question. More...
 
std::vector< std::string > GetOptions () const
 Get all available options. More...
 
- Public Member Functions inherited from mitk::Forms::Question
 Question ()
 Default constructor. More...
 
virtual ~Question ()
 Virtual destructor. More...
 
std::string GetQuestionText () const
 Get the literal question text. More...
 
void SetQuestionText (const std::string &question)
 Set the literal question text. More...
 
bool IsRequired () const
 Check whether a response to this question is required to complete a form. More...
 
void SetRequired (bool required=true)
 Set whether a response to this question is required to complete a form. More...
 
virtual std::string GetRequiredText () const
 Get the text that should be displayed to clearly mark a question as required. More...
 
virtual bool HasFileResponses () const
 Query whether the responses given to this question are file paths. More...
 
virtual std::vector< fs::path > SubmitFileResponses (const fs::path &basePath) const
 Attach response files to submission. More...
 
virtual std::string GetType () const =0
 Return the type of a question as string, e.g. "Multiple choice" or "Drop-down". More...
 
virtual Question * CreateAnother () const =0
 Create a new instance of the derived question class type. More...
 
virtual void FromJSON (const nlohmann::ordered_json &j)=0
 Deserialize from JSON. More...
 
virtual void ToJSON (nlohmann::ordered_json &j) const =0
 Serialize to JSON. More...
 

Protected Member Functions

void SetResponse (size_t i) override
 Set a regular option as the single response and clear any "Other" response. More...
 
void AddOtherResponse (const std::string &response)
 Add the free text given as "Other" option to the list of responses. More...
 
void RemoveOtherResponse ()
 Remove the "Other" response from the list of already given responses. More...
 
void SetOtherResponse (const std::string &response)
 Set the "Other" response as single exclusive response to this question. More...
 
- Protected Member Functions inherited from mitk::Forms::QuestionWithOptions
void AddResponse (size_t i)
 Add one of the possible answer options to the responses. More...
 
void RemoveResponse (size_t i)
 Remove one of the already given responses. More...
 

Detailed Description

Base class for questions with options that may also have a free text option.

This base class is an extension of QuestionWithOptions representing questions that may also have a free text option, typically labeled "Other" in forms/surveys.

Just like with QuestionWithOptions, depending on the exclusivity of the answer options, use using-declarations in derived classes to change the visibility of the respective protected member functions to public, i.e., SetOtherResponse() vs. AddOtherResponse() and RemoveOtherResponse().

Definition at line 31 of file mitkQuestionWithOtherOption.h.

Constructor & Destructor Documentation

◆ QuestionWithOtherOption()

mitk::Forms::QuestionWithOtherOption::QuestionWithOtherOption ( )

Constructor.

Initializes the question without an "Other" option.

◆ ~QuestionWithOtherOption()

mitk::Forms::QuestionWithOtherOption::~QuestionWithOtherOption ( )
override

Virtual destructor.

Member Function Documentation

◆ AddOtherResponse()

void mitk::Forms::QuestionWithOtherOption::AddOtherResponse ( const std::string &  response)
protected

Add the free text given as "Other" option to the list of responses.

Parameters
[in]responseThe free text response.
Precondition
HasOtherOption() must return true.
Exceptions
mitk::ExceptionIf the "Other" option is not enabled.
Note
A question can only have a single "Other" response. Consecutive calls to this method will override the previously set "Other" response.

◆ ClearResponses()

void mitk::Forms::QuestionWithOtherOption::ClearResponses ( )
overridevirtual

Clear all selected responses, including the "Other" response.

Reimplemented from mitk::Forms::QuestionWithOptions.

◆ EnableOtherOption()

void mitk::Forms::QuestionWithOtherOption::EnableOtherOption ( )

Switch on the "Other" option.

By default, a question does not have an "Other" option.

◆ GetResponsesAsStrings()

std::vector<std::string> mitk::Forms::QuestionWithOtherOption::GetResponsesAsStrings ( ) const
overridevirtual

Return all selected responses as strings, including the "Other" response if set.

Returns
A vector of response strings. The "Other" response, if present, is appended after the regular option responses.

Reimplemented from mitk::Forms::QuestionWithOptions.

◆ HasOtherOption()

bool mitk::Forms::QuestionWithOtherOption::HasOtherOption ( ) const

Query whether this question actually has an "Other" option.

Returns
true if the "Other" option has been enabled, false otherwise.

◆ IsComplete()

bool mitk::Forms::QuestionWithOtherOption::IsComplete ( ) const
overridevirtual

Check whether at least one response (regular or "Other") has been given.

Returns
true if at least one option is selected or the "Other" response is set.

Reimplemented from mitk::Forms::QuestionWithOptions.

◆ RemoveOtherResponse()

void mitk::Forms::QuestionWithOtherOption::RemoveOtherResponse ( )
protected

Remove the "Other" response from the list of already given responses.

◆ SetOtherResponse()

void mitk::Forms::QuestionWithOtherOption::SetOtherResponse ( const std::string &  response)
protected

Set the "Other" response as single exclusive response to this question.

This clears any previously selected regular option responses and sets only the "Other" free text as the response.

Parameters
[in]responseThe free text response.
Precondition
HasOtherOption() must return true.
Exceptions
mitk::ExceptionIf the "Other" option is not enabled.

◆ SetResponse()

void mitk::Forms::QuestionWithOtherOption::SetResponse ( size_t  i)
overrideprotectedvirtual

Set a regular option as the single response and clear any "Other" response.

Parameters
[in]iThe zero-based index of the option to set.

Reimplemented from mitk::Forms::QuestionWithOptions.


The documentation for this class was generated from the following file: